ホームページ > データベース > mysql チュートリアル > ## MySQL では文字列のマッチングに「LIKE」と「LOCATE」のどちらが速いですか?

## MySQL では文字列のマッチングに「LIKE」と「LOCATE」のどちらが速いですか?

Patricia Arquette
リリース: 2024-10-25 02:36:30
オリジナル
696 人が閲覧しました

## Which is Faster in MySQL: `LIKE` or `LOCATE` for String Matching?

MySQL LIKE と LOCATE のどちらが速いですか?

MySQL では、文字列のパターン マッチングによく使用される関数が 2 つあります。 LIKEそして位置を特定します。どちらの関数も文字列内の部分文字列の検索に使用できますが、アプローチとパフォーマンス特性が異なります。

LIKE と LOCATE

LIKE 演算子はワイルドカードを使用して、文字のパターンを一致させます。 % (任意の数の文字と一致) や _ (単一の文字と一致) を含む、さまざまなワイルドカード文字がサポートされます。例:

<code class="sql">SELECT * FROM table WHERE column LIKE '%text%';</code>
ログイン後にコピー

このクエリは、列値のどこかに文字列「text」が含まれるすべての行を検索します。

一方、LOCATE 関数は位置を検索します。文字列内の指定された部分文字列の。部分文字列が最初に出現したインデックスを返します。部分文字列が見つからない場合は 0 を返します。例:

<code class="sql">SELECT * FROM table WHERE LOCATE('text', column) > 0;</code>
ログイン後にコピー

このクエリは、列値のどこかに部分文字列「text」が含まれるすべての行を検索します。

パフォーマンスの比較

一般に、LIKE 演算子は LOCATE よりもわずかに高速です。これは、LIKE では、結果が 0 より大きいかどうかを確認するために追加の比較を実行する必要がないためです。

このパフォーマンスの違いを実証するには、次のベンチマークを考慮してください。

<code class="sql">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)</code>
ログイン後にコピー

ベンチマーク結果によると、文字列内の部分文字列を検索する場合、LIKE は LOCATE よりわずかに高速です。ただし、ほとんどの実際の使用例では、パフォーマンスの違いは比較的小さいです。

以上が## MySQL では文字列のマッチングに「LIKE」と「LOCATE」のどちらが速いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート