mysql在何时放弃索引而使用全表扫描

我们知道一般情况下使用索引扫描效率会优于全表扫描,但是有些情况下mysql仍然会放弃索引而是用全表扫描,那么出现这种情况的原因是什么呢?我认为答案很简单,sql查询优化器认为全表扫描效率比索引扫描高,就会使用全表扫描。那么sql优化器是如何计算扫描效率的呢?哈哈,我也不知道!!!大家可以看一下《数据库索引设计与优化》,了解一下数据库索引结构和优化器的原理。

https://www.jianshu.com/p/0b9117982ee1(转载),文中观点很有意思,"可能因为mysql这个东西太复杂,感觉sql优化都快成玄学了。网上流传了很多“奇技淫巧”,让人真假难辨。我觉得可能是过去mysql优化不是很好时,大家有一些优化的技巧,但随着mysql更新优化,现在已经成为过时甚至错误的做法。但这些说法还在流传,造成了我这样的新手的困惑。",个人也非常认同。

对于sql优化的技巧还是要保持一个思辨的过程,在使用的时候explain一下,多多查阅mysql官方文档吧https://dev.mysql.com/doc/refman/5.6/en/optimize-overview.html。

你可能感兴趣的:(mysql)