A と B の 2 つのテーブルがあります。これらのテーブルは A.bid = B.id でリンクされています。テーブル A には 19 列、テーブル B には 10 列があります。両方のテーブルには、約 40,000 のレコードが含まれています。
私は次の 3 つの単純なクエリを見てきました。
-- Query 1
SELECT Col1, Col2, Col3, Col4, Col5 FROM A, B
WHERE A.bid = B.id
-- Query 2
SELECT * FROM A
-- Query 3
SELECT Col1 FROM A
私が興味深いと思ったのは、クエリ 2 の実行に最も時間がかかり、次にクエリ 1 (結合) が続き、クエリ 3 (より制限的な射影) が最も速いということです。3 つのクエリはすべて同じ数の行を返します。
この動作の原因は何ですか? プロジェクションの列数がパフォーマンスに大きな影響を与えるのはなぜですか? もちろん、プロジェクションが無料ではないことは理解していますが、(より制限されたプロジェクションを使用しても)結合が単純なSELECT *
操作よりも高速に(はるかに高速に)実行される方法がわかりません。
ありがとう。