ホームページ >データベース >mysql チュートリアル >SQL の IN 句でタプル ペアを効率的にクエリするにはどうすればよいですか?

SQL の IN 句でタプル ペアを効率的にクエリするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-31 15:29:14312ブラウズ

How Can I Efficiently Query for Tuple Pairs in SQL's IN Clause?

SQL IN 句でのタプルの使用: 文字列連結の代替

SQL では、IN 句を使用してフィールドをセットと比較できます。価値観の。ただし、複数の値を含むタプルの処理には課題が生じる可能性があります。

問題

フィールド group_id と group_type を持つテーブルを考え、特定のタプルを持つレコードをクエリしたいとします。ペア、たとえば:

SELECT *
FROM mytable
WHERE (group_id, group_type) IN (("1234-567", 2), ("4321-765", 3), ("1111-222", 5))

文字列連結を使用するための提案されたソリューションは、次のようになります。大規模なテーブルの場合は非効率的です:

SELECT *
FROM mytable
WHERE group_id + STR(group_type, 1) IN ("1234-5672", "4321-7653", "1111-2225")

標準 SQL ソリューション

より効率的な解決策は、IN 句のタプルに標準 SQL-92 構文を使用することです。 VALUES キーワード:

SELECT *
FROM mytable
WHERE (group_id, group_type) IN (
    VALUES ('1234-567', 2), 
           ('4321-765', 3), 
           ('1111-222', 5)
);

この構文はいくつかの SQL 製品でサポートされています。 PostgreSQL および SQLite を含みます。

Microsoft SQL Server 注

この記事の執筆時点 (SQL Server 2022) では、この構文は Microsoft SQL Server ではサポートされていません。

以上がSQL の IN 句でタプル ペアを効率的にクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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