Come posso vedere se il mio database ha degli indici?
Che ne dici di una tabella specifica?
Come posso vedere se il mio database ha degli indici?
Che ne dici di una tabella specifica?
Risposte:
Per vedere l'indice per una tabella specifica utilizzare SHOW INDEX:
SHOW INDEX FROM yourtable;
Per visualizzare gli indici per tutte le tabelle all'interno di uno schema specifico, è possibile utilizzare la tabella STATISTICA da INFORMATION_SCHEMA:
SELECT DISTINCT
TABLE_NAME,
INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_schema';
La rimozione della clausola where ti mostrerà tutti gli indici in tutti gli schemi.
DISTINCT
parola chiave maschererà alcuni indici: ho una tabella in cui un indice ha lo stesso nome ma viene utilizzato su due colonne diverse, quindi l'esempio di schema informativo qui mostrerà solo un indice.
from mydb
come mostrato nella risposta di LiorK.
Se si desidera visualizzare contemporaneamente tutti gli indici in tutti i database:
use information_schema;
SELECT * FROM statistics;
SELECT * FROM information_schema.statistics;
SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;
Vedere la documentazione .
È possibile utilizzare questa query per ottenere il numero di indici e i nomi degli indici di ciascuna tabella nel database specificato.
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 questa domanda:
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';
Hai trovato tutti gli indici solo indice.
Considerare.
Per ottenere tutte le colonne indicizzate per indice in una colonna nell'ordine di sequenza.
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;
Rif: http://blog.9minutesnooze.com/mysql-information-schema-indexes/
Puoi controllare i tuoi indici in MySQL workbench. Sotto le schede dei rapporti sulle prestazioni puoi vedere tutti gli indici usati e gli indici inutilizzati sul sistema. oppure puoi attivare la query.
select * from sys.schema_index_statistics;