找出MySQL索引的使用情况统计数据?

R_U*_*ser 17 mysql indexing statistics usage-statistics

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

我有几个表的索引,我想知道,如果有没有MySQL使用的indice.

use*_*667 21

是的.您应该查询性能架构:

select * from performance_schema.table_io_waits_summary_by_index_usage
where object_schema = 'your_schema'
Run Code Online (Sandbox Code Playgroud)

count_star列显示自MySQL启动以来每个索引的使用次数.如果添加以下内容,则会获得从未使用过的索引:

and count_star = 0
Run Code Online (Sandbox Code Playgroud)


ESG*_*ESG 5

注意:这个答案从 5.5.3 开始不再有效!

/sf/answers/3024412121/

原答案如下。

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

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


All*_*ing 5

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

select * from sys.schema_unused_indexes;
Run Code Online (Sandbox Code Playgroud)

获取未使用索引的列表。