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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找出MySQL索引的使用情况统计数据?相关的知识,希望对你有一定的参考价值。

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

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

答案

注意:从5.5.3开始,此答案不再有效!

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

原答案如下。

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

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

另一答案

是的。你应该查询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;

获取未使用索引的列表。

另一答案

我不认为这是可能的,索引与DDL一起使用它是表的一部分,我不相信你可以统计它使用的索引的次数或者如何将mane查询应用于特定的行。如果您想要了解有关表/查询中索引的更多信息,可以始终使用以下命令:

explain select * from table

但这不是统计数据

有关更多信息explain here

以上是关于找出MySQL索引的使用情况统计数据?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库之索引

mysql不等于走索引吗

两个片段之间的 onItemClickListener

mysql数据库之索引和分析索引

mysql查询优化策略

mysql的索引