mysql索引优化
19.12.29
1、explain
参考:https://blog.csdn.net/wuseyukui/article/details/71512793
https://blog.csdn.net/u012410733/article/details/66472157
https://www.cnblogs.com/ggjucheng/archive/2012/11/11/2765237.html
https://www.jianshu.com/p/19b4b1a78995
2、连表原理及优化
mysql只支持一种join算法:Nested-Loop Join(嵌套循环连接),
但Nested-Loop Join有三种变种:Simple Nested-Loop Join,Index Nested-Loop Join,Block Nested-Loop Join
1.Simple Nested-Loop Join:遍历驱动表每一个值,每一个值都遍历一遍非驱动表。非常耗时。
2.Index Nested-Loop Join(索引嵌套):非驱动表关联字段有索引,遍历驱动表每一个值,非驱动表关联直接用索引,非常快。
3.Block Nested-Loop Join:没有索引会产生一个join_buffer_size=256K的缓存空间,是将驱动表的所有join相关的列都先缓存到join buffer中,然后批量与匹配表进行匹配,将第一种多次比较合并为一次,降低了非驱动表(s)的访问频率。
此时也会根据表的情况和大小来选择驱动表,都没有索引,就选小表作为驱动表,扫描次数会少呗。
参考:https://www.jianshu.com/p/16ad9669d8a9
3、优化例子参考:https://www.cnblogs.com/LQBlog/p/10711743.html#autoid-3-3-0 很好。
还有一个例子及解释,一般吧。https://www.cnblogs.com/weizhenlu/p/5970392.html