MySQL 文字列マッチングの INSTR と LIKE のパフォーマンス比較
MySQL では、カラム内の文字列を検索するときに、次の 2 つの一般的な方法があります。インスタやいいね。どちらの方が速くて効率的ですか?
INSTR vs LIKE
INSTR(columnname, 'mystring') > 0 は、columnname 内で 'mystring' が見つかった場合に true を返しますが、columnname LIKE '%mystring%' は、columnname 内のどこかで 'mystring' が見つかった場合に true を返します。 INSTR と LIKE は、'varchar'、'text'、'blob' などの型の文字列列に対してサポートされています。
パフォーマンス テスト
テストでは、カウント40,000 行を超えるテーブルで 'search' が発生した場合、INSTR と LIKE はどちらも同様に実行され、約5.54秒。ただし、「search%」などの接尾辞ワイルドカードのみを指定して LIKE を使用すると、クエリは大幅に高速になり、わずか 3.88 秒かかりました。
全文検索
元の質問では特に言及されていませんが、テキストベースのクエリでは通常、FULLTEXT検索の方が高速であることは注目に値します。ただし、特殊なインデックスの使用が必要であり、必ずしもすべてのシナリオに適しているわけではありません。
結論
フルテーブル スキャンの場合は、接頭辞と接頭辞の両方を使用した INSTR と LIKE接尾辞のワイルドカードも同様に機能します。ただし、テキスト列の先頭にある文字列を検索する場合は、接尾辞ワイルドカードを使用した LIKE の方がはるかに効率的になります。パフォーマンスが重要な場合は、全文検索の使用を検討すると最良の結果が得られる可能性があります。
以上がMySQL の INSTR と LIKE: どちらの文字列マッチング関数が速いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。