Veritabanımda herhangi bir dizin olup olmadığını nasıl görebilirim?
Belirli bir tabloya ne dersiniz?
Veritabanımda herhangi bir dizin olup olmadığını nasıl görebilirim?
Belirli bir tabloya ne dersiniz?
Yanıtlar:
Belirli bir tablonun dizinini görmek için SHOW INDEX kullanın:
SHOW INDEX FROM yourtable;
Belirli bir şemadaki tüm tabloların dizinlerini görmek için BİLGİ_SCHEMA sayfasından STATISTICS tablosunu kullanabilirsiniz:
SELECT DISTINCT
TABLE_NAME,
INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_schema';
Where yan tümcesini kaldırdığınızda, tüm şemalardaki tüm dizinler gösterilir.
DISTINCT
Anahtar kelime bazı dizinleri maskelemek unutmayın - Ben bir dizin aynı ada sahip ama iki farklı sütun kullanılan bir tablo var, bu yüzden burada bilgi şeması örneği sadece bir dizin gösterecektir.
from mydb
LiorK cevabı gösterildiği gibi.
Tüm veritabanlarındaki tüm dizinleri aynı anda görmek istiyorsanız:
use information_schema;
SELECT * FROM statistics;
SELECT * FROM information_schema.statistics;
Belirtilen veritabanındaki her tablonun dizin adlarının yanı sıra dizin adlarını almak için bu sorguyu kullanabilirsiniz.
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;
Bu sorguyu öneriyorum:
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';
Hepiniz Endeksi bulundu sadece indeks.
Saygı.
Dizin başına dizine eklenen tüm sütunları, sıralama düzenindeki bir sütunda almak için.
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/
Endekslerinizi MySQL çalışma tezgahında kontrol edebilirsiniz. Performans raporları sekmeleri altında sistemde kullanılan tüm indeksleri ve kullanılmayan indeksleri görebilirsiniz. veya sorguyu tetikleyebilirsiniz.
select * from sys.schema_index_statistics;