ホームページ >データベース >mysql チュートリアル >EXISTS サブクエリ: SELECT 1 または SELECT * – パフォーマンスに影響しますか?

EXISTS サブクエリ: SELECT 1 または SELECT * – パフォーマンスに影響しますか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-15 20:38:13323ブラウズ

EXISTS Subqueries: SELECT 1 or SELECT * – Does it Matter for Performance?

*EXISTS サブクエリ: SELECT 1 と SELECT **

SQL で EXISTS サブクエリを使用する場合、よくある質問は次のとおりです。サブクエリでは SELECT 1 または SELECT * を使用する必要がありますか?

*SELECT と SELECT 1**

以前は、EXISTS サブクエリでは SELECT * より SELECT 1 の方が効率的であると考えられていました。しかし、そうではありません。 SQL Server は、サブクエリの SELECT リストで指定された列に関係なく、システムに NO DATA を返すように EXISTS チェックを最適化します。

マイクロソフトの視点

Microsoft によると: 「EXISTS によって導入されたサブクエリの SELECT リストには、ほとんどの場合、アスタリスク (*) が含まれています。指定された条件を満たす行があるかどうかをテストしているだけなので、列名をリストする理由はありません。サブクエリ「

デモ

これを確認するには、次のクエリを検討してください:

<code class="language-sql">SELECT whatever
FROM yourtable
WHERE EXISTS( SELECT 1/0
FROM someothertable 
WHERE a_valid_clause )</code>

SELECT * が選択された列に対して実際に何らかの操作を実行すると、クエリによってゼロ除算エラーが発生します。ただし、そうではなく、サブクエリの SELECT リストが無視され、行の存在を判断するためにのみ使用されることを示しています。

標準 SQL

SQL 標準もこのビューをサポートしています: 「'' が に直接含まれる にのみ含まれている場合、'' は A と同等です」任意の <リテラル> の <値式>

結論

要約すると、EXISTS サブクエリで SELECT 1 または SELECT * を使用してもパフォーマンスに違いはありません。したがって、どのオプションがより読みやすいか、またはコーディング スタイルと一貫性があるかを検討することをお勧めします。

以上がEXISTS サブクエリ: SELECT 1 または SELECT * – パフォーマンスに影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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