为了账号安全,请及时绑定邮箱和手机立即绑定

SQL语句里使用OR关键字会使索引失效吗

SQL语句里使用OR关键字会使索引失效吗

湖上湖 2019-03-29 22:11:26
看到OSChina上的两篇文章《OSChina用户动态设计说明》和《OSChina的留言表设计说明》中都提到,如果在SQL语句的查询条件中使用OR的话,会消除SQL优化的效果,索引在这里也会失去作用。不明觉厉,求高手指点。
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

大多数SQL数据库的索引都是B+Tree之类的数据结构,这个结构是“有序”的,比如一个integer字段上的索引会按照这个字段的值进行排序,这种索引的优点在于可以支持rangequery,比如wheref>100这样的条件可以充分有效的利用索引。
但是这种结构也会带来一个问题——不同的两个字段的索引的顺序并不相同,比如wheref1>100orf2<50这样的条件,你只能顺序扫描f1和f2的索引,这时你无法同时用两个索引判断一条记录是否满足条件,所以为了做这样的过滤,只能放弃其中一个索引,甚至做全表扫描。
                            
查看完整回答
反对 回复 2019-03-29
  • 2 回答
  • 1 关注
  • 4077 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信