以下の2つのクエリが異なるカウントをフェッチする理由を理解できません。ケース1はより多くの行をフェッチし、ケース2は少数の行をフェッチします。 where
句を外側に置くと、取り出されるレコードが少なくなります。WHERE句を残して行を制限する
ケース1
SELECT COUNT(1)
FROM (
SELECT *
FROM (SELECT * FROM TABLE1 WHERE COL1 = 123) A
LEFT JOIN TABLE2 B ON B.COL2=A.COL4
LEFT JOIN TABLE3 C ON C.COL3=B.COL2
)
ケース2
SELECT COUNT(1)
FROM (
SELECT *
FROM (SELECT * FROM TABLE1) A
LEFT JOIN TABLE2 B ON B.COL2=A.COL4
LEFT JOIN TABLE3 C ON C.COL3=B.COL2
)
WHERE COL1 = 123
この現象を再現するサンプルデータを掲載してください。 – APC
理論的にはこれは可能ですが、サンプルデータがなければ、結果を説明することは困難です – scaisEdge
返信いただきありがとうございます。しかし、もしあなたが理論的な説明を提供することができますも – zubi