可変文字長の MySQL カラム内の文字列の存在をテストする場合、効率とスピードを実現する最適な方法。一般的なアプローチは次の 2 つです:
1. INSTR(列名, 'mystring' ) > 0
2.列名 LIKE '%mystring%'
速度の点で、テストでは驚くべき結果が明らかになりました。部分文字列の存在をチェックするとき、INSTR と LIKE はどちらも同じように実行されます。例:
INSTR(Name,'search') > 0 LIKE '%search%'
どちらのクエリもテーブル全体をスキャンし、完了までに約 5.54 秒かかりました。ただし、インデックス付き列でプレフィックス検索を実行する場合、サフィックス ワイルドカードのみを使用した LIKE 演算子は INSTR よりも大幅にパフォーマンスが優れています。
LIKE 'search%'
この最適化されたプレフィックス検索にかかった時間はわずか 3.88 秒です。
INSTR と LIKE に加えて、MySQL は改良された FULLTEXT 検索もサポートしています。 パフォーマンス。ただし、これらの検索は、テーブル列に FULLTEXT でインデックスが付けられており、検索している文字列が列の先頭近くにある場合に最も効率的です。
実際には、次のいずれかを選択します。 INSTR と LIKE は、特定の使用例によって異なります。
以上がMySQL における INSTR と LIKE: どちらの文字列マッチング方法が速いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。