22,209
社区成员
发帖
与我相关
我的任务
分享
在下面的例子中, LOC_ID 和REGION 上都建有索引.
高效:
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”
用UNION 替换OR (适用于索引列)
通常情况下, 用UNION 替换WHERE 子句中的OR 将会起到较好的效果. 对索引列使用OR 将造
成全表扫描. 注意, 以上规则只针对多个索引列有效. 如果有column 没有被索引, 查询效
率可能会因为你没有选择OR 而降低.