MySQL如何查询到缺失的索引?然后自动创建索引。

时间:2022-09-18 20:31:25
就是针对一个数据库中的某些应该创建的索引但是又没有创建,导致为了查询这些数据服务器的资源被严重占用。如何能从统计表中查询到这些,然后创建出应该创建的,但是又没有创建的索引。

在MS SQL中有这样的统计表,看到资料说MySQL的也有,但是没找到更详细的,请多多指教。

3 个解决方案

#1


应该创建的索引但是又没有创建...没有这种表的,只能对慢查询进行解析优化,手动添加索引

#2



mysql> show variables like '%log_queries_not_using_indexes%';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF   |
+-------------------------------+-------+
1 row in set (0.00 sec)


有个这个参数  动态打开就行set global   log_queries_not_using_indexes =on;然后没有走索引的查询全部写入慢查询日志
前提是你慢查询日志也是打开的  
日志可以人肉看 也可以用工具pt-query-digest分析

#3


不过未用和缺少索引还是有很大差别,这种层面是没办法和 SQL Server 比的

#1


应该创建的索引但是又没有创建...没有这种表的,只能对慢查询进行解析优化,手动添加索引

#2



mysql> show variables like '%log_queries_not_using_indexes%';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF   |
+-------------------------------+-------+
1 row in set (0.00 sec)


有个这个参数  动态打开就行set global   log_queries_not_using_indexes =on;然后没有走索引的查询全部写入慢查询日志
前提是你慢查询日志也是打开的  
日志可以人肉看 也可以用工具pt-query-digest分析

#3


不过未用和缺少索引还是有很大差别,这种层面是没办法和 SQL Server 比的