[MySQL] 如何调优SQL

问题回顾

1.为什么要使用索引?
答:索引能避免全表扫描,提高查询效率。
2.什么样的信息能成为索引?
答:主键、唯一键等让数据具备一定区分性的字段都能成为索引。
3.索引的数据结构
答:主流B+树,Hash结构,BitMap等。其中MySQL不支持BitMap,不显式支持哈希

如何定位并优化慢查询SQL

在这里插入图片描述
慢日志查询
在这里插入图片描述
慢查询的数量
在这里插入图片描述
在这里插入图片描述
注意此处使用set命令在重启数据库后又无效,恢复原来的值
如下,灌入两百万条数据,来测试慢查询
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
出现all为全表扫描 则需要优化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
走稀疏索引account(唯一键),而不走id(主键,密集索引),是因为这是由查询优化器决定的,主键存放了其他值,拖了查询时间,而count只需要扫描叶节点构成的链表即可。所以 走稀疏索引count更快。
在这里插入图片描述

联合索引的最左匹配原则的成因

联合索引,由多列组成的索引。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

索引是建立的越多越好嘛

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42054926/article/details/106801529