データベースインデックスが失効したN種類の場合

1068 ワード

       :    、    、    、    、    
        ,                  

1、where句で使用!=または<>オペレータ2、where句でorを使用して条件を接続します.接続されたフィールドにインデックスがない場合、すべてのフィールドのインデックスが無効になります(検証されます).3、where句の条件列タイプは文字列です.=後の値に単一引用符が付いていません4、where句のlikeのあいまいな一致は%で始まります5、フィールドは、where句で等号の左側で式または関数で操作されます.これにより、操作後のフィールド結果値はエンジンにとって予知できません.6、エンジン推定を実行してインデックスを使用するよりも全表スキャンを使用するほうが速い場合は、インデックス7、where句でinおよびnot inは使用されません.existsを使用するか、inとnot inの代わりにbetweenを連続区間で使用するとインデックスの失効を防止できます.
   ,       7              ,         
        ,         。             ,   
      ,        where          

 B+    ,       index(a,b,c,d),           :

1、a=xがaを用いたインデックス2、a=x and b=xがabを用いたインデックス3、a=x and b=x and c=xがabcを用いたインデックス4、a=x and b=x and c=x and d=xがabcdを用いたインデックス5、c=x and a=x and d=x and b=x乱序の場合、実行エンジンはそれを並べ替える可能性があるので、インデックスを用いるかどうかは実行計画によって確認する.6、a=x and c=xまたはa=x and b=x and d=x(1)式はaのインデックスを用い、(2)式はabのインデックスを用いる.最も左の接頭辞に一致するが連続していない場合、連続していないフィールドではインデックスは使用されません.7、a=x and b=x and cはいずれも最左マッチングの原則を満たすため、この原則を満たさないと組合せインデックスは完全に失効する.