是否有可能找出 MySQL 表索引的使用频率?
我有几个表索引,我想知道是否有 MySQL 未使用的索引。
是的。您应该查询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;
获取未使用索引的列表。
注意:此答案自 5.5.3 起不再有效!
见https://stackoverflow.com/a/43205887/1251127
下面的原始答案。
目前,MySQL 不提供有关索引使用情况的统计信息。
自己生成这些统计信息的一种方法是记录所有查询(请注意此处的额外 i/o)并将其解析出来。Percona 有一个很好的工具pt-index-usage。