表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包含两个索引就是没有索引
答
- * > # ## 生的丰盛的方式史蒂芬森