2017-02-26 10 views
0

たとえば、最初のクエリは2番目のクエリとは異なる処理を受けますか?一見2つのテーブルを結合する場合、WHERE句は結合の前後にテーブルサイズを縮小しますか?

クエリ1

SELECT t1.var1, t2.var2 FROM table1 t1 
INNER JOIN table2 t2 
ON t1.key = t2.key 
WHERE t2.ID = 'ABCD' 

クエリ2

SELECT t1.var1, t2.var2 FROM table1 t1 
INNER JOIN (
      SELECT var2, key from table2 
      WHERE ID = 'ABCD' 
      ) t2 
ON t1.key = t2.key 
WHERE t2.ID = 'ABCD' 

2番目のクエリは、より効率的であるかのように、それはそうです - 参加が始まる前table2のが低減され、最初のクエリは最初にテーブルを結合してから、後で減らすように見えます。私はteradataを使用しています。

+1

2つのクエリのパフォーマンスで同一である必要があります(開始の)AMPCPUTimeのクエリログを確認してください。 Teradataは優れたSQLオプティマイザを備えています。そのため、特に単純なクエリの場合、適切な処理を行うことができます。 –

答えて

1

ベンダー、バージョン、構成によって異なります。
Teradataの旧バージョン/従来の構成では、クエリ2の最初の段階としてサブクエリがスプールされ、になりました。クエリの1と比較してのパフォーマンスが低下しました。
このような「最適化」を避けることをお勧めします。

p.s.

  1. プランまたは異なる実行計画の両方に同じ実行プランが適用されているかどうかを確認してください。
関連する問題