比如各位昨天回答我的那个问题,第三个SELECT 1 FROM person WHERE id=1 AND first_name='2',SQL会判断这两列哪个索引效率高,最终使用效率高(id聚集索引)的那个,然后表扫描SELECT 1 FROM person WHERE id=1 的结果,在其中筛选first_name='2'(做了非聚集索引)的记录,而筛选的过程不会用到first_name='2'的非聚集索引,请问我的理解对吗?
调试欢乐多
可是为什么不在WHERE id=1结果中走那个first_name='2'的非聚集索引,那不是更快
要看first_name='2'的重复次数的,比如first_name总共数目100条,90条都等于'2',那走索引也没什么意义,肯定选择表扫描
多谢卡神指导,我插入了很多条GUID的记录,果然用到了那个非聚集索引最后还有个问题,直接用SELECT 1 FROM person WHERE first_name='1' (first_name是非聚集索引)貌似不管表中重复的几率大或小,他会直接使用first_name的非聚集索引扫描,是吗?
高手哥,SELECT 1 FROM person WHERE first_name='1' (first_name是非聚集索引),直接使用first_name的非聚集索引查找,应该SQL的内部机制吧,就是这么规定的