が主キー列であり、インデックスが付けられている場合user_id
、それで十分です。
次の両方の条件が満たされている場合にのみ、複合インデックスを作成することを検討してくださいuser_id
。user_email_confirmed
お使いの DBMS は、追加の列を持つ一意のインデックスをサポートしています ( DB2はサポートしていますが、他にどれがあるかはわかりません)。
CREATE UNIQUE INDEX pkx_user ON User(User_ID) INCLUDE(User_Email_Confirmed); -- DB2
クエリの多くには、user_email_confirmed
列が含まれます。
それ以外の場合、インデックスは無駄なスペースになります。値を取得するために行のデータを取得する必要があることを考えると、列user_email
のチェックにも実際のコストはかかりuser_email_confirmed
ません。複合インデックスにもuser_email
列が含まれている場合、インデックスの効率は低下しますが (インデックス内の各行のデータが大きくなるため)、データ行のフェッチを回避できます (インデックスになります)。クエリのみ)。それが重要かどうかを判断するのは難しいです — 行をフェッチしないことによる利益よりも、インデックスの効率の低下の方が大きいかどうかは疑問です。