Como ver se meu banco de dados possui algum índice?
Que tal para uma tabela específica?
Como ver se meu banco de dados possui algum índice?
Que tal para uma tabela específica?
Respostas:
Para ver o índice de uma tabela específica, use SHOW INDEX:
SHOW INDEX FROM yourtable;
Para ver índices para todas as tabelas em um esquema específico, você pode usar a tabela STATISTICS em INFORMATION_SCHEMA:
SELECT DISTINCT
TABLE_NAME,
INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_schema';
A remoção da cláusula where mostra todos os índices em todos os esquemas.
DISTINCT
palavra - chave mascarará alguns índices - eu tenho uma tabela em que um índice tem o mesmo nome, mas é usado em duas colunas diferentes; portanto, o exemplo do esquema de informações aqui mostrará apenas um índice.
from mydb
como mostrado na resposta do LiorK.
Se você deseja ver todos os índices em todos os bancos de dados de uma só vez:
use information_schema;
SELECT * FROM statistics;
SELECT * FROM information_schema.statistics;
SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;
Veja a documentação .
Você pode usar esta consulta para obter o número de índices e os nomes de cada tabela no banco de dados especificado.
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;
Eu proponho 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';
Você encontrou todo o índice apenas do índice.
Que diz respeito.
Para obter todas as colunas indexadas por índice em uma coluna na ordem de sequência.
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/
Você pode verificar seus índices no ambiente de trabalho MySQL. Nas guias de relatórios de desempenho, você pode ver todos os índices usados e não utilizados no sistema. ou você pode disparar a consulta.
select * from sys.schema_index_statistics;