避免索引失效原则(二)
注:继上一篇文章继续讲解:
避免索引失效原则(一)https://www.cnblogs.com/StanleyBlogs/p/10482048.html#4195062
作者 : Stanley 罗昊
【转载请注明出处和署名,谢谢!】
体验SQL优化中的概率情况
在上一篇文章结尾处,我们在执行查询计划的时候,却发现我明明加了索引,并且也满足了使用索引的条件,但是,给我的优化结果却是失败,从而,得出一个结论便是,优化是概率的,也就跟彩票一样,不可能百分之百优化成功的,但是彩票我们都知道,全凭运气,但是这里就不一样了,我们需要了解SQL优化概率背后到底是谁导致它优化失败的;
首先,我们来了解下,出现概率优化的原因:因为在SQL底层中,有一个服务层,服务层有一个SQL优化器,当我们写一条语句,虽然我们手动优化了,但是,优化器觉得你优化的不太合适,它可能会进行一些自己的干扰,干扰完毕之后就执行结果就不再是你理想中的那样了,所以这个优化器有的时候会阻扰我们的优化工作;
接下来,我们就通过几个例子来体验一下我们设想的优化和实际不一样的一些操作;
首先,我们需要建立一个复合索引:
alter table book add index idx_book_at(authorid,typeid);
建立完索引后,我们进行一个简单的查询:
exp