ホームページ >データベース >mysql チュートリアル >SQL で複数の LIKE 条件を使用する場合、一時テーブルで効率を向上させるにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。