ホームページ >データベース >mysql チュートリアル >## MySQL LIKE と LOCATE: パターン マッチングではどちらが速いですか?
MySQL LIKE と LOCATE: どちらが効率的ですか?
MySQL でパターン マッチング クエリを実行する場合、主に 2 つのオプションがあります。演算子と LOCATE 関数。どちらのパフォーマンスが速いですか?
この質問に答えるために、簡単なベンチマークを使用してこれら 2 つのアプローチのパフォーマンスを比較してみましょう。次のクエリは、LIKE 演算子を使用して、列に特定のテキストが含まれる行を検索します。
SELECT * FROM table WHERE column LIKE '%text%';
次のクエリは、LOCATE 関数を使用して同じ操作を実行します。
SELECT * FROM table WHERE LOCATE('text',column)>0;
実行中大規模なデータセットに対するこれらのクエリでは、主に LOCATE で必要な追加の比較 (> 0) を回避できるため、LIKE 演算子の方がわずかに高速であることがわかります。ベンチマークの結果は次のとおりです:
mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar')); +---------------------------------------------+ | BENCHMARK(100000000,LOCATE('foo','foobar')) | +---------------------------------------------+ | 0 | +---------------------------------------------+ 1 row in set (3.24 sec) mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar') > 0); +-------------------------------------------------+ | BENCHMARK(100000000,LOCATE('foo','foobar') > 0) | +-------------------------------------------------+ | 0 | +-------------------------------------------------+ 1 row in set (4.63 sec) mysql> SELECT BENCHMARK(100000000,'foobar' LIKE '%foo%'); +--------------------------------------------+ | BENCHMARK(100000000,'foobar' LIKE '%foo%') | +--------------------------------------------+ | 0 | +--------------------------------------------+ 1 row in set (4.28 sec) mysql> SELECT @@version; +----------------------+ | @@version | +----------------------+ | 5.1.36-community-log | +----------------------+ 1 row in set (0.01 sec)
以上が## MySQL LIKE と LOCATE: パターン マッチングではどちらが速いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。