2010-07-14 7 views
11

Recientemente reescribí completamente un gran proyecto. Al hacerlo, he consolidado una gran cantidad de consultas MySQL aleatorias. Recuerdo que a lo largo del desarrollo de la base de código anterior, creé índices por capricho, y estoy seguro de que hay un gran número que ya no se usa.¿Cómo se identifican los índices no utilizados en una base de datos MySQL?

¿Hay alguna manera de controlar el uso del índice de MySQL para determinar qué índices se están utilizando y cuáles no?

Respuesta

14

No creo que esta información esté disponible en una instalación stock MySQL.

Percona fabrica herramientas y parches para MySQL para recopilar datos de uso de índices.

Ver:

Ver también:

También puede estar interesado en una aplicación Java llamada MySQLIndexAnalyzer, que ayuda a encontrar redundantes índices. Pero esta herramienta no tiene idea de qué índices están sin usar.

+1

+1 - Yo recomendaría los parches de Percona también. No tuve acceso a ellos, así que terminé registrando cada consulta ejecutada, luego analizando esta tabla fuera de línea ejecutando EXPLAIN contra las consultas y contando qué índices/were/usé, que luego me permitieron descubrir qué/weren ' t /! –

+0

@Dave Rix: Buena solución dada la situación. Si también cuenta cuántas veces se ha visto cada consulta en sus registros, puede asignarla a los índices informados por EXPLAIN para cada consulta, y luego extrapolar qué índices se usan con frecuencia y no con poca frecuencia. Un índice que se usa, pero que se usa solo en raras ocasiones, también puede ser un candidato para abandonar. –

+0

Tiene razón, no está disponible en una versión de stock, aunque hay una herramienta antigua llamada mysqlidxchx. Vea los dos últimos párrafos de mi publicación aquí: http://www.mysqlperformanceblog.com/2009/10/16/how-not-to-find-unused-indexes/ –

Cuestiones relacionadas