2 hua289581229 hua289581229 于 2015.05.25 21:39 提问

表A两个字段分别a与b,字段a与b都是单独索引,请描述一下sql的语句的问题

求职的时候遇到一个笔试题,我楞是不知道有什么问题。求问答
表A两个字段分别a与b,字段a与b都是单独索引,请描述一下sql的语句的问题?
SELECT * FROM A where b=1 or a=1;

7个回答

caozhy
caozhy   Ds   Rxr 2015.05.25 22:04
已采纳

主流的数据库对于这种整数做索引都是基于btree当你用or包含2个独立索引的条件的时候,索引会失效,引起全表扫描。
更多的关于索引的使用建议参考:
http://www.douban.com/note/301944037/

teclick
teclick   2015.05.25 21:45

这个SQL的索引用不上啦

guwei4037
guwei4037   Ds   Rxr 2015.05.25 21:50

会导致索引失效,造成全表扫描。

caozhy
caozhy   Ds   Rxr 2015.05.25 22:04

应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20

guohua823
guohua823   2015.05.26 08:52

索引条件并列的时候,就没有效果啦~ 就跟没索引一样

xionglangs
xionglangs   Rxr 2015.05.26 09:49

where中有or包含两个索引就是没有索引

u011785909
u011785909   2015.11.09 19:32
  1. * > # ## 生的丰盛的方式史蒂芬森图片说明

Csdn user default icon
上传中...
上传图片
插入图片