Let's say I have a query like this :
SELECT *
FROM
(SELECT x,y,z
FROM Foo
WHERE x NOT IN (sq1)
UNION SELECT x,y,z
FROM Foo2
WHERE x NOT IN (sq2))
WHERE y IN ('a','b')
AND z IN ('xa','xb','xc')
And then I transform it to this:
SELECT x,y,z
FROM Foo
WHERE x NOT IN (sq1) AND y IN ('a','b') AND z IN ('xa','xb','xc')
UNION
SELECT x,y,z
FROM Foo2
WHERE x NOT IN (sq2) AND y IN ('a','b') AND z IN ('xa','xb','xc')
I did this to avoid selecting all and then filtering, but I'm not sure about how Oracle will treat this, normally when y IN ('a','b')
is returning false Oracle shouldn't execute the sq1
.
So does any one know how Oracle will execute this ?