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

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

问题描述:

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

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

这个SQL的索引用不上啦

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

应尽量避免在 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

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

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

  1. * > # ## 生的丰盛的方式史蒂芬森图片说明