ホームページ >データベース >mysql チュートリアル >EXISTS サブクエリ: SELECT 1 または SELECT * – パフォーマンスに影響しますか?
*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 標準もこのビューをサポートしています: 「'' が
結論
要約すると、EXISTS サブクエリで SELECT 1 または SELECT * を使用してもパフォーマンスに違いはありません。したがって、どのオプションがより読みやすいか、またはコーディング スタイルと一貫性があるかを検討することをお勧めします。以上がEXISTS サブクエリ: SELECT 1 または SELECT * – パフォーマンスに影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。