Як я бачу, чи в моїй базі даних є якісь індекси?
Як щодо конкретної таблиці?
Як я бачу, чи в моїй базі даних є якісь індекси?
Як щодо конкретної таблиці?
Відповіді:
Щоб побачити індекс для певної таблиці, використовуйте SHOW INDEX:
SHOW INDEX FROM yourtable;
Щоб побачити індекси для всіх таблиць у певній схемі, ви можете використовувати таблицю STATISTICS з INFORMATION_SCHEMA:
SELECT DISTINCT
TABLE_NAME,
INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_schema';
Видалення пункту де покаже вам всі індекси у всіх схемах.
DISTINCT
ключове слово маскує деякі індекси - у мене є таблиця, де індекс має те саме ім'я, але використовується у двох різних стовпцях, тому приклад інформаційної схеми тут покаже лише один індекс.
from mydb
як показано у відповіді LiorK.
Якщо ви хочете одразу побачити всі індекси у всіх базах даних:
use information_schema;
SELECT * FROM statistics;
SELECT * FROM information_schema.statistics;
SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;
Дивіться документацію .
Ви можете використовувати цей запит, щоб отримати номер індексів, а також імена індексів кожної таблиці у визначеній базі даних.
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;
Я пропоную цей запит:
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';
Ви знайшли весь індекс лише для індексу.
З повагою.
Для отримання всіх індексованих стовпців на індекс в одному стовпці в порядку послідовності.
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;
Посилання: http://blog.9minutesnooze.com/mysql-information-schema-indexes/
Ви можете перевірити свої індекси на MySQL workbench. під вкладками звітів про ефективність ви можете побачити всі використані індекси та невикористані індекси в системі. або ви можете запустити запит.
select * from sys.schema_index_statistics;