Performance difference if I UNION first, then put WHERE on unioned result set?
In Microsoft SQL, is there any difference in performance between this:
SELECT columns FROM table1 WHERE cond
UNION
SELECT columns FROM table2 WHERE cond
and this:
SELECT columns FROM
(
SELECT columns FROM table1
UNION
S开发者_运维知识库ELECT columns FROM table2
) WHERE cond
?
The former is preferrable because if index(es) exist on any column referenced in the WHERE clause (barring being wrapped in function calls), the index(es) can be used.
The latter is a derived table, so index use is out of the question.
精彩评论