如何识别MySQL数据库中未使用的索引?

如何识别MySQL数据库中未使用的索引?,mysql,optimization,indexing,Mysql,Optimization,Indexing,我最近完全重写了一个大项目。通过这样做,我整合了大量随机MySQL查询。我确实记得,在开发之前的代码库的过程中,我一时兴起创建了索引,我确信有很多索引不再使用了 有没有一种方法可以监控MySQL的索引使用情况,以确定哪些索引正在使用,哪些索引没有使用?我认为在一个普通的MySQL安装中没有这些信息 Percona为MySQL制作工具和补丁,以收集索引使用数据 见: 另见: 您可能还对名为的Java应用程序感兴趣,它有助于查找冗余索引。但是这个工具不知道哪些索引是未使用的。+1

我最近完全重写了一个大项目。通过这样做,我整合了大量随机MySQL查询。我确实记得,在开发之前的代码库的过程中,我一时兴起创建了索引,我确信有很多索引不再使用了


有没有一种方法可以监控MySQL的索引使用情况,以确定哪些索引正在使用,哪些索引没有使用?

我认为在一个普通的MySQL安装中没有这些信息

Percona为MySQL制作工具和补丁,以收集索引使用数据

见:

另见:


您可能还对名为的Java应用程序感兴趣,它有助于查找冗余索引。但是这个工具不知道哪些索引是未使用的。

+1-我也推荐Percona补丁。我没有访问它们的权限,所以最终记录了每个查询的运行,然后离线解析这个表,针对查询运行EXPLAIN,并计算出哪些索引/被/使用,这将让我找出哪些/没有/@戴夫·里克斯:考虑到目前的情况,这是一个很好的解决方案。如果还记录每个查询在日志中出现的次数,则可以将其映射到EXPLAIN为每个查询报告的索引,然后推断哪些索引经常使用,哪些索引不经常使用。一个被使用但很少使用的索引也可能会被删除。你是对的,它在股票发行版中不可用,尽管有一个叫做mysqlidxchx的旧工具。请看我文章的最后两段:@Morgan:谢谢你的推荐!