2011-03-06 9 views

Respuesta

486

para ver el índice para un uso específico tabla SHOW INDEX:

SHOW INDEX FROM yourtable; 

Para ver los índices para todas las tablas dentro de un esquema específico puede utilizar la tabla de estadísticas de INFORMATION_SCHEMA:

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

Extracción la cláusula where le mostrará todos los índices en todos los esquemas.

+1

Tenga en cuenta que la palabra clave 'DISTINCT' enmascara algunos índices: tengo una tabla donde un índice tiene el mismo nombre pero se usa en dos columnas diferentes, por lo que el ejemplo del esquema de información aquí solo mostrará un índice. – Ben

+0

Tuve que agregar 'from mydb' como se muestra en la respuesta de LiorK. – Nate

+1

ver http://blog.9minutesnooze.com/mysql-information-schema-indexes/ – Pisu

27
SHOW INDEX FROM mytable FROM mydb; 

SHOW INDEX FROM mydb.mytable; 

Ver documentation.

33

Si quieres ver todos los índices en todas las bases de datos de todos a la vez:

use information_schema; 
SELECT * FROM statistics; 
2

propongo esta consulta:

SELECT DISTINCT s.* 
FROM INFORMATION_SCHEMA.STATISTICS s 
LEFT OUTER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t 
    ON t.TABLE_SCHEMA = s.TABLE_SCHEMA 
     AND t.TABLE_NAME = s.TABLE_NAME 
     AND s.INDEX_NAME = t.CONSTRAINT_NAME 
WHERE 0 = 0 
     AND t.CONSTRAINT_NAME IS NULL 
     AND s.TABLE_SCHEMA = 'YOUR_SCHEMA_SAMPLE'; 

que pueda encontrar toda Índice única índice.

Regard.

4

Puede usar esta consulta para obtener el número de índices así como los nombres de índice de cada tabla en la base de datos especificada.

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; 
-2

Para una tabla específica:

SELECT * 
FROM sys.indexes 
WHERE object_id = (
    SELECT object_id 
    FROM sys.objects 
    WHERE name = 'yourTableName' 
) 
+0

Eso sería para MS SQL Server ... – AnthonyVO

0

Puede comprobar sus índices de MySQL workbench.under los informes de rendimiento más aquí se puede ver todos los índices utilizados y los índices utilizados en el sistema. o puedes disparar la consulta.

select * from sys.schema_index_statistics;

+0

Este código no funciona –

+0

Paul qué herramienta está utilizando? Este código funciona para en mysql workbeanch. –

+0

Lo usé en shell MySQL –

Cuestiones relacionadas