SELECT * FROM TB WHERE COL1=1 OR COL1=2
结果应该和
SELECT * FROM TB WHERE COL1=1
UNION ALL
SELECT * FROM TB WHERE COL1=2
结果一样
也就是说,OR和UNION ALL可以完成相同的工作,那么什么情况下用UNION ALL会比用OR快呢?
希望大家指点
结果应该和
SELECT * FROM TB WHERE COL1=1
UNION ALL
SELECT * FROM TB WHERE COL1=2
结果一样
也就是说,OR和UNION ALL可以完成相同的工作,那么什么情况下用UNION ALL会比用OR快呢?
希望大家指点
通常情况下, 用UNION 替换WHERE 子句中的OR 将会起到较好的效果. 对索引列使用OR 将造
成全表扫描. 注意, 以上规则只针对多个索引列有效. 如果有column 没有被索引, 查询效
率可能会因为你没有选择OR 而降低.
BS 0分
高效:
SELECT LOC_ID , LOC_DESC , REGION
FROM LOCATION
WHERE LOC_ID = 10
UNION
SELECT LOC_ID , LOC_DESC , REGION
FROM LOCATION
WHERE REGION = “MELBOURNE”
低效:
SELECT LOC_ID , LOC_DESC , REGION
FROM LOCATION
WHERE LOC_ID = 10 OR REGION = “MELBOURNE”