26

是否有可能找出 MySQL 表索引的使用频率?

我有几个表索引,我想知道是否有 MySQL 未使用的索引。

4

3 回答 3

42

是的。您应该查询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
于 2017-04-04T11:25:59.840 回答
9

除了@user1970667 的回答,您还可以使用:

select * from sys.schema_unused_indexes;

获取未使用索引的列表。

于 2017-04-16T06:28:32.747 回答
5

注意:此答案自 5.5.3 起不再有效!

https://stackoverflow.com/a/43205887/1251127

下面的原始答案。

目前,MySQL 不提供有关索引使用情况的统计信息。

自己生成这些统计信息的一种方法是记录所有查询(请注意此处的额外 i/o)并将其解析出来。Percona 有一个很好的工具pt-index-usage

于 2013-01-03T17:48:18.327 回答