パフォーマンスの比較: INSTR と LIKE
タイプ 'varchar' の MySQL カラム内の文字列を検索する場合、' text'、'blob' など、どの方法がより効率的ですか: INSTR(columnname, 'mystring') > 0 または列名 LIKE '%mystring%'?
The Answer
FULLTEXT 検索は最高のパフォーマンスを提供します。ただし、INSTR と LIKE を比較すると、通常のインデックスなしの全テーブル スキャンではどちらのメソッドも同じように実行されます。
詳細な比較
作成者が実施したテストでは、INSTRと LIKE は同等のパフォーマンスを示しました。ただし、接尾辞ワイルドカードのみを指定した LIKE (例: 列名 LIKE 'search%') を使用してインデックス付き列の接頭辞検索を実行すると、INSTR よりも大幅にパフォーマンスが向上します。
Implementation
INSTR と LIKE はどちらも列を左から右にスキャンし、検索文字列と保存されたデータを比較します。 INSTR は完全一致を検索しますが、LIKE では部分一致にワイルドカード文字 (% および _) を使用できます。
推奨事項
接頭辞一致が必要ないインデックス付き列の場合、 INSTR と LIKE はどちらも同様のパフォーマンスを備えた実行可能なオプションです。ただし、インデックスのないテーブルを扱う場合、またはサフィックスのみを検索する場合は、結果を高速化するために、サフィックス ワイルドカードを使用した LIKE をお勧めします。
以上がMySQL における INSTR と LIKE: 文字列検索ではどちらがより効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。