【发布时间】:2012-12-18 02:30:54
【问题描述】:
是否可以查明 MySQL 表的索引被使用的频率?
我有几个表索引,我想知道是否有 MySQL 未使用的索引。
【问题讨论】:
标签: mysql indexing statistics usage-statistics
是否可以查明 MySQL 表的索引被使用的频率?
我有几个表索引,我想知道是否有 MySQL 未使用的索引。
【问题讨论】:
标签: mysql indexing statistics usage-statistics
注意:此答案自 5.5.3 起不再有效!
见https://stackoverflow.com/a/43205887/1251127
原始答案如下。
目前,MySQL 不提供关于索引使用情况的统计信息。
您自己生成这些统计信息的一种方法是记录所有查询(请注意此处的额外 i/o)并将其解析出来。 Percona 有一个很好的工具,pt-index-usage。
【讨论】:
是的,是的。你应该查询Performance Schema:
select * from performance_schema.table_io_waits_summary_by_index_usage
where object_schema = 'your_schema'
count_star 列显示自 MySQL 启动以来每个索引使用了多少次。如果您添加以下内容,您将获得从未使用过的索引:
and count_star = 0
【讨论】:
除了@user1970667 的回答,您还可以使用:
select * from sys.schema_unused_indexes;
获取未使用索引的列表。
【讨论】:
This view is most useful when the server has been up and processing long enough that its workload is representative.。我想查询performance_schema 时也是如此