2013-01-03 243 views

回答

4

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

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

原来的答复。

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

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

+0

这太糟糕了,我分享完全相同的需求。 –

1

我不认为这是可能的,索引与DDL一起,因此它是表的一部分,我不相信你可以统计它使用的索引有多少次或者如何应用鬃毛查询到特定的行。如果你想知道更多关于你的表中的索引/查询,你可以随时使用命令:

explain select * from table

,但它不是统计

更多信息有关解释here

6

是的。您应该查询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 
+0

适用于mySQL 5.5.3或更高版本,只有在my.cnf中启用 请参阅https://dev.mysql.com/doc/refman/5.5/en/performance-schema.html –

1

加成@ user1970667的回答,您还可以使用:

select * from sys.schema_unused_indexes; 

获得未使用的索引列表。