sql >> データベース >  >> RDS >> Mysql

LIKE句がある場合の最適なタイプのインデックス作成

    はい、ここにあるのはデータベースキラーです

    Bツリーインデックスは、=、>、> =、<、<=、またはBETWEEN演算子を使用する式の列比較に使用できます。 LIKEの引数がワイルドカード文字で始まらない定数文字列である場合、インデックスはLIKEの比較にも使用できます。

    出典: http://dev.mysql.com /doc/refman/5.7/en/index-btree-hash.html

    つまり、LIKEクエリはインデックスを使用できず、ORに接続された2つのいいねがあります。それだけでは不十分な場合は、NOTINの比較も行っています。

    しかし幸いなことに、2番目のLIKE式はそれほど悪くはなく、ワイルドカードで始まりません。したがって、usage_guidance, nameに複合インデックスを作成することをお勧めします。

    SHOW CREATE TABLEと数行のサンプルデータ+期待される出力を投稿できれば、このクエリを書き直す方法があるかどうかがわかるかもしれません。




    1. SelectQueryでGroupbyを使用してHaving句を適用する方法-SQLServer/TSQLチュートリアルパート131

    2. SQLで月番号を月名関数に変換する

    3. CRS 11.2.0

    4. MySQLで外部キーチェックを無効にする方法