2013-01-03 229 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; 

獲得未使用的索引列表。