Jak zobaczyć indeksy dla bazy danych lub tabeli w MySQL?

Jak sprawdzić, czy w mojej bazie są jakieś indeksy?

Co powiesz na konkretną tabelę?

Author: Ramratan Gupta, 2011-03-06

8 answers

Aby zobaczyć indeks dla konkretnej tabeli użyj Pokaż indeks:

SHOW INDEX FROM yourtable;

Aby zobaczyć indeksy dla wszystkich tabel w określonym schemacie, możesz użyć tabeli statystyk z INFORMATION_SCHEMA:

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

Usunięcie klauzuli where spowoduje wyświetlenie wszystkich indeksów we wszystkich schematach.

 552
Author: Mark Byers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-06 21:11:19

Jeśli chcesz zobaczyć wszystkie indeksy we wszystkich bazach danych na raz:

use information_schema;
SELECT * FROM statistics;
 34
Author: RolandoMySQLDBA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-17 08:48:04
SHOW INDEX FROM mytable FROM mydb;

SHOW INDEX FROM mydb.mytable;

Patrz Dokumentacja .

 30
Author: LiorK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-17 08:47:50

Możesz użyć tego zapytania, aby uzyskać numer indeksów, a także nazwy indeksów każdej tabeli w określonej bazie danych.

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;
 5
Author: adeviloper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-21 07:38:58

Proponuję to zapytanie:

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

Znalazłeś wszystkie indeks tylko indeks.

Regard.

 3
Author: user2065095,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-21 06:46:31

Aby sprawdzić wszystkie wyłączone indeksy na db

SELECT INDEX_SCHEMA, COLUMN_NAME, COMMENT 
FROM information_schema.statistics
WHERE table_schema = 'mydb'
AND COMMENT = 'disabled'
 1
Author: Digital87,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-28 06:25:00

To działa w moim przypadku przy pobieraniu nazwy tabeli i nazwy kolumny w odpowiedniej tabeli dla indeksowanych pól.

SELECT TABLE_NAME , COLUMN_NAME, COMMENT 
FROM information_schema.statistics
WHERE table_schema = 'database_name';
 1
Author: asim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-28 12:06:14

Możesz sprawdzić swoje indeksy w MySQL workbench.w zakładkach raporty wydajności można zobaczyć wszystkie używane indeksy i nieużywane indeksy w systemie. albo możesz odpalić zapytanie.

select * from sys.schema_index_statistics;
 0
Author: Ganesh Giri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-28 12:06:06