跳到主要内容

1 篇博文 含有标签「OR优化」

查看所有标签

SQL优化技巧 - OR连接的条件重写为UNION

· 阅读需 6 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

问题定义

如果使用OR连接两个查询条件,数据库优化器有可能无法使用索引来完成查询。譬如对于以下的SQL语句,

select * from customer where c_phone like '139%' or c_name = 'Ray'

如果这两个字段上都有索引,可以把他们重写为UNION查询,以便使用索引提升查询性能。

select * from customer where c_phone like '139%'
union
select * from customer where c_name = 'Ray'

但是这种转换并不总是能够提升查询性能,它需要一定的适用条件,并需要经过基于代价的估算。