2016-12-19 14 views
-3

私は2つのテーブルTblAとTblBを持っているとしましょう。 TblAは毎月数百万のレコードを持ち、TblBは製品の情報を切り離している。whereとleft joinを持つSQL節のパフォーマンス

select 
    t1.*, t2.name 
from 
    TblA as t1 
left join 
    TblB as T2 on t1.idProduct = t2.idProduct 
where 
    t1.month = 6 

またはこの1:

select 
    t1.*, t2.name 
from 
    (select * from tblA where month = 6) as t1 
left join 
    TblB as t2 on t1.idProduct = t2.idProduct 

私の推測では、私が選択プリため、2番目の1が行う前に、私が欲しいだけヶ月速くなりますで速くなりますクエリ

左結合。

左結合を実行する前にwhere節を処理するデータベースシステムのプレビルドはありますか?

ありがとうございます!

+1

実行して調べますか? – Siyual

+0

あなたはそれを数回実行して、どちらが速いのかを知りませんか? – dfundako

+0

これまでのところ、1ヶ月しかテーブルにはありません。 – user3495024

答えて

0

はそれらの両方を実行し、クエリを見てそれもそれは多少依存しているあなたが使用しているRDBMSの推定時間

0

にあなたの分割を与える
を計画しています。しかし、それらのほとんどは、これらのクエリの両方をまったく同じものとして解釈します。両方のクエリでexplain planを実行することで、データベースに該当するかどうかを判断できます。計画が同じである場合、オプティマイザは両方のクエリが同等であることを正しく認識し、両方のクエリが同じ計画を立てています。

通常、SQLは操作の順序を指定しません。オプティマイザはすべてのオプションを検討し、最適なオプションを選択することができます。クエリをネストすることは通常それを変更するものではありません。ほとんどのオプティマイザは、できるだけ多くのオプションを提供するクエリをフラットにします。