Hoe zie ik of mijn database er indexen op heeft?
Hoe zit het met een specifieke tafel?
Antwoord 1, Autoriteit 100%
Om de index voor een specifieke tabel te gebruiken, gebruikt u index:
SHOW INDEX FROM yourtable;
Om indexen voor alle tabellen te zien binnen een specifiek schema, kunt u de statistiekentabel uit Information_schema gebruiken:
SELECT DISTINCT
TABLE_NAME,
INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_schema';
Verwijderen van de waar clausule u alle indexen in alle schema’s laat zien.
Antwoord 2, Autoriteit 7%
Als u alle indexen in alle databases allemaal tegelijk wilt zien:
use information_schema;
SELECT * FROM statistics;
Antwoord 3, Autoriteit 6%
SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;
Zie Documentatie .
Antwoord 4
U kunt deze query gebruiken om de nee van indexen als de indexnamen van elke tabel in de opgegeven database te krijgen.
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;
Antwoord 5
Ik stel deze query voor:
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';
Je hebt de hele Index alleenindex gevonden.
Met vriendelijke groet.
Antwoord 6
Om alle geïndexeerde kolommen per index in één kolom in de volgordevolgorde te krijgen.
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 -indexen/
Antwoord 7
Om alle uitgeschakelde indexen op db te controleren
SELECT INDEX_SCHEMA, COLUMN_NAME, COMMENT
FROM information_schema.statistics
WHERE table_schema = 'mydb'
AND COMMENT = 'disabled'
Antwoord 8
U kunt uw indexen controleren in MySQL workbench. Onder de prestatierapporten-tabbladen kunt u alle gebruikte indexen en ongebruikte indexen op het systeem zien. of u kunt de query afvuren.
select * from sys.schema_index_statistics;
Antwoord 9
Dit werkt in mijn geval om de tabelnaam en kolomnaam in de overeenkomstige tabel voor geïndexeerde velden te krijgen.
SELECT TABLE_NAME , COLUMN_NAME, COMMENT
FROM information_schema.statistics
WHERE table_schema = 'database_name';
Antwoord 10
Waarom niet show create table myTable
?
Iemand heeft me dit verteld, maar ik heb niemand hier iets slechts zien noemen?
Het is handig als u een blik wilt werpen op de indexen en de kolominformatie.
Antwoord 11
gebruik om indexen te zien die u heeft gemaakt
SHOW INDEX from your_table_name;
om alle indexen op een tabel te zien (gemaakt door DB en u)
SHOW EXTENDED INDEX from your_table_name;
Antwoord 12
Als u de indexinformatie van een tabel wilt opvragen, gebruikt u de instructie SHOW INDEXES als volgt:
SHOW INDEXES FROM table_name;
U kunt de databasenaam opgeven als u niet verbonden bent met een database of als u de indexinformatie van een tabel in een andere database wilt ophalen:
SHOW INDEXES FROM table_name
IN database_name;
De volgende zoekopdracht is vergelijkbaar met de bovenstaande:
SHOW INDEXES FROM database_name.table_name;
Houd er rekening mee dat INDEX en KEYS de synoniemen zijn van de INDEXES, IN het synoniem is van de FROM, daarom kunt u deze synoniemen in plaats daarvan gebruiken in de kolom INDEXEN TONEN. Bijvoorbeeld:
SHOW INDEX IN table_name
FROM database_name;
Of
SHOW KEYS FROM tablename
IN databasename;
Antwoord 13
we kunnen de indexen direct in de tabel zien als we de indexnaam weten met hieronder:
selecteer * uit all_indexes waar index_name= ‘uw index’