パターン マッチングにおける MySQL LIKE と LOCATE のパフォーマンスの比較
MySQL には、文字列に対してパターン マッチング操作を実行するための 2 つの主要な関数、LIKE と LOCATE が用意されています。探します。どちらも同様の目的を果たしますが、パフォーマンス特性に微妙な違いがあり、クエリの効率に影響を与える可能性があります。
LIKE 演算子は、ワイルドカード文字 (%) を使用して文字列内のパターンを照合します。例:
<code class="sql">SELECT * FROM table WHERE column LIKE '%text%';</code>
一方、LOCATE 関数は、文字列内で最初に出現した特定の部分文字列を検索し、その位置を返します。ゼロ以外の結果は一致を示します:
<code class="sql">SELECT * FROM table WHERE LOCATE('text', column) > 0;</code>
これら 2 つの関数のパフォーマンスを比較すると、一般に、LIKE 演算子の方が LOCATE よりわずかに高速に実行されることが観察されます。これは主に、LIKE が一致が存在するかどうかを判断するために追加の比較 ('> 0") を必要としないという事実によるものです。
この違いを説明するために、次のベンチマーク結果を考えてみましょう。
<code class="shell">mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar')); +---------------------------------------------+ | BENCHMARK(100000000,LOCATE('foo','foobar')) | +---------------------------------------------+ | 0 | +---------------------------------------------+ mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar') > 0); +-------------------------------------------------+ | BENCHMARK(100000000,LOCATE('foo','foobar') > 0) | +-------------------------------------------------+ | 0 | +-------------------------------------------------+ mysql> SELECT BENCHMARK(100000000,'foobar' LIKE '%foo%'); +--------------------------------------------+ | BENCHMARK(100000000,'foobar' LIKE '%foo%') | +--------------------------------------------+ | 0 | +--------------------------------------------+</code>
この例では、LIKE は LOCATE よりわずかに優れており、1 億回の反復の実行にかかる時間は約 0.65 秒短くなります。ただし、パフォーマンスの違いは文字列の長さやパターンによって異なる可能性があることに注意することが重要です。検索されているものと、使用されている MySQL のバージョン。
以上が## MySQL パターン マッチング: LIKE と LOCATE: どちらが速いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。