458 votes

Comment voir les index d'une base de données ou d'une table ?

Comment puis-je voir si ma base de données contient des index ?

Et pour une table spécifique ?

756voto

Mark Byers Points 318575

Pour voir l'index d'une table spécifique, utilisez SHOW INDEX :

SHOW INDEX FROM yourtable;

Pour voir les index de toutes les tables d'un schéma spécifique, vous pouvez utiliser la table STATISTICS de INFORMATION_SCHEMA :

SELECT DISTINCT
    TABLE_NAME,
    INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_schema';

En supprimant la clause where, on obtient tous les index dans tous les schémas.

52voto

RolandoMySQLDBA Points 19439

Si vous voulez voir tous les index de toutes les bases de données en une seule fois :

use information_schema;
SELECT * FROM statistics;

41voto

LiorK Points 157
SHOW INDEX FROM mytable FROM mydb;

SHOW INDEX FROM mydb.mytable;

Voir documentation .

10voto

adeviloper Points 161

Vous pouvez utiliser cette requête pour obtenir le nombre d'index ainsi que les noms d'index de chaque table dans la base de données spécifiée.

SELECT TABLE_NAME,
       COUNT(1) index_count,
       GROUP_CONCAT(DISTINCT(index_name) SEPARATOR ',\n ') indexes
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'mydb'
      AND INDEX_NAME != 'primary'
GROUP BY TABLE_NAME
ORDER BY COUNT(1) DESC;

7voto

user16304329 Points 71

Pour voir les index que vous avez créés, utilisez

SHOW INDEX from your_table_name;

pour voir tous les index sur une table ( créés par DB et vous)

SHOW EXTENDED INDEX from your_table_name;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X