¿Cómo veo si mi base de datos tiene algún índice?
¿Qué tal para una mesa específica?
¿Cómo veo si mi base de datos tiene algún índice?
¿Qué tal para una mesa específica?
Respuestas:
Para ver el índice de una tabla específica, use SHOW INDEX:
SHOW INDEX FROM yourtable;
Para ver los índices de todas las tablas dentro de un esquema específico, puede usar la tabla STATISTICS de INFORMATION_SCHEMA:
SELECT DISTINCT
TABLE_NAME,
INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_schema';
Al eliminar la cláusula where, se mostrarán todos los índices en todos los esquemas.
DISTINCT
palabra clave enmascarará algunos índices: tengo una tabla donde un índice tiene el mismo nombre pero se usa en dos columnas diferentes, por lo que el ejemplo de esquema de información aquí solo mostrará un índice.
from mydb
como se muestra en la respuesta de LiorK.
Si desea ver todos los índices en todas las bases de datos a la vez:
use information_schema;
SELECT * FROM statistics;
SELECT * FROM information_schema.statistics;
SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;
Ver documentación .
Puede usar esta consulta para obtener el no 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;
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';
Encontraste todo el índice solo índice.
Considerar.
Para obtener todas las columnas indexadas por índice en una columna en el orden de secuencia.
SELECT table_name AS `Table`,
index_name AS `Index`,
GROUP_CONCAT(column_name ORDER BY seq_in_index) AS `Columns`
FROM information_schema.statistics
WHERE table_schema = 'sakila'
GROUP BY 1,2;
Ref: http://blog.9minutesnooze.com/mysql-information-schema-indexes/
Puede verificar sus índices en MySQL workbench. Debajo de las pestañas de informes de rendimiento, puede ver todos los índices usados e índices no usados en el sistema. o puedes disparar la consulta.
select * from sys.schema_index_statistics;