ホームページ >データベース >mysql チュートリアル >SQL で複数の LIKE 条件を使用する場合、一時テーブルで効率を向上させるにはどうすればよいですか?

SQL で複数の LIKE 条件を使用する場合、一時テーブルで効率を向上させるにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-08 14:12:40976ブラウズ

How Can a Temporary Table Improve Efficiency When Using Multiple LIKE Conditions in SQL?

LIKE 演算子で複数の条件を処理するには一時テーブルを使用します

SQL では、LIKE 演算子を使用して文字列値のパターン マッチングを実行します。 OR 演算子を使用して複数の LIKE 条件を組み合わせることができますが、より良い解決策は一時テーブルを使用することです。

次のステートメントを考えてみましょう:

<code class="language-sql">select * from tbl where col like ('ABC%','XYZ%','PQR%');</code>

このステートメントは、col 列がパターン ABC%、XYZ%、または PQR% に一致する tbl テーブル内のすべての行を取得するように設計されています。 OR の使用は効率的なアプローチですが、条件が多数の場合は退屈で非効率になる可能性があります。

代わりに、パターンと呼ばれる一時テーブルを作成して、照合するすべてのパターンを保存できます。

<code class="language-sql">CREATE TEMPORARY TABLE patterns (
  pattern VARCHAR(20)
);

INSERT INTO patterns VALUES ('ABC%'), ('XYZ%'), ('PQR%');</code>

一時テーブルを作成した後、LIKE 演算子を使用して一時テーブルを tbl テーブルと結合できます。

<code class="language-sql">SELECT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);</code>

このクエリでは、パターン テーブルのパターン列を使用して、tbl テーブルのcol 列と一致します。結果は、パターン テーブル内の任意のパターンに一致する tbl 内の行のリストです。

TBL 内の行が複数のパターンに一致する場合、その行は結果に複数回表示されることに注意することが重要です。これが望ましくない場合は、DISTINCT クエリ修飾子を使用できます:

<code class="language-sql">SELECT DISTINCT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);</code>

これにより、複数のパターンに一致する場合でも、テーブル内の各行が結果に 1 回だけ表示されるようになります。

以上がSQL で複数の LIKE 条件を使用する場合、一時テーブルで効率を向上させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。