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

SELECTを高速化する方法..複数の列に対するMySQLのLIKEクエリ?

    テキスト列の場合、インデックスは左からN文字のインデックスを作成することで機能するため、インデックスを使用してもクエリは高速化されません。 LIKE'%text%'を実行すると、テキストの前に可変数の文字が存在する可能性があるため、インデックスを使用できません。

    あなたがすべきことは、そのようなクエリをまったく使用しないことです。代わりに、MySQLがMyISAMテーブルに対してサポートするFTS(全文検索)のようなものを使用する必要があります。 MyISAM以外のテーブル用に、このようなインデックスシステムを自分で作成することも非常に簡単です。必要なのは、単語とそれに関連するIDを実際のテーブルに格納する別のインデックステーブルだけです。

    更新

    MySQL5.6以降のInnoDBテーブルで利用可能な全文検索。



    1. SQLiteで2つのタイムスタンプの差を計算する方法

    2. Oracleに挿入した後にID列の値を返す

    3. AWSにMySQLGaleraクラスターをデプロイする簡単な方法

    4. PostgreSQL –繰り返し値を排除する方法