ホームページ > データベース > mysql チュートリアル > SQL の「LIKE」と「=」: ワイルドカードのマッチングがより効率的になるのはどのような場合ですか?

SQL の「LIKE」と「=」: ワイルドカードのマッチングがより効率的になるのはどのような場合ですか?

Barbara Streisand
リリース: 2025-01-05 07:37:43
オリジナル
964 人が閲覧しました

`LIKE` vs. `=` in SQL: When is Wildcard Matching More Efficient?

ワイルドカードを使用した場合の SQL の 'LIKE' と '=' のパフォーマンス

一般に、ワイルドカードを使用する場合は 'LIKE' よりも '=' の方が効率的であると考えられています。 SQL クエリのワイルドカード。ただし、常にそうであるとは限りません。

次の例を考えてみましょう:

SELECT * FROM table WHERE value LIKE 'abc%'
ログイン後にコピー
SELECT * FROM table WHERE value = 'abcdefghijklmn'
ログイン後にコピー

この場合、「LIKE」は最初の 3 文字を比較するだけで検索できます。マッチ。 「=」は文字列全体を比較する必要があります。したがって、このシナリオでは「LIKE」が有利であるように見えるかもしれません。

ただし、インデックスの使用は、「LIKE」クエリのパフォーマンスに影響を与える可能性があります。 MyITForum の Jonathan Nelson によるこの記事で述べられているように、

  • フィルタ条件に「=」が使用され、フィールドにインデックスが付けられている場合、INDEX/CLUSTERED INDEX SEEK が使用される可能性があります。
  • フィルター条件でワイルドカードなしで「LIKE」を使用する場合、インデックスを使用する可能性はほぼ同じです。 '='.
  • フィルター条件で先頭にワイルドカードを含む 'LIKE' を使用する場合、インデックスが使用される可能性は非常に低くなります。
  • ただし、フィルター条件で 'LIKE' を使用する場合は、 ' STRING FIRST があり、その後のどこかにワイルドカードが含まれている場合、SQL は INDEX SEEK を使用して同じ最初の開始文字を持つ行を検索し、それらの行を調べて正確な一致を見つけることができます。 match.

したがって、ワイルドカードを使用した「LIKE」クエリと「=」クエリのパフォーマンスは、インデックスの使用法、ワイルドカードの場所、使用されている特定の SQL エンジンなどのさまざまな要因に依存します。

以上がSQL の「LIKE」と「=」: ワイルドカードのマッチングがより効率的になるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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