クエリとパフォーマンスを記述する最良の方法について、職場の何人かの男と話し合っているだけです。
最初のテーブルからのすべての結合で結合する行が少なくなるように、最初の結果セットを制限する方がよいでしょうか?
例えば:
表: REFCODE には最大 10,000 行あります
表: WHSE には最大 200 行あります
性能的にはどっちがいい?
内部結合を使用して、大きな結果セットから行を絞り出します。
SELECT
*
FROM
REFCODE
INNER JOIN
WHSE ON
WHSE.RCIDX = REFCODE.RCIDX
小さい方の結果セットを最初に使用する:
SELECT
*
FROM
WHSE
INNER JOIN
REFCODE ON
REFCODE.RCIDX = WHSE.RCIDX
最大の結果セットを使用しますが、where 句を使用して、2 番目のテーブルに結合することがわかっているレコードのみをフィルター処理します
SELECT
*
FROM
REFCODE
INNER JOIN
WHSE ON
WHSE.RCIDX = REFCODE.RCIDX
WHERE
REFCODE.TYPE = 'WHSE'
それとも、CBO は同様の説明計画を決定しますか? 職場の人から、常に可能な限り最小の結果セットから始めるように言われましたが、よくわかりません!
どんな議論も感謝します!