MySQL查詢重複索引和冗餘索引
阿新 • • 發佈:2019-02-06
索引的建立對資料庫的查詢效能有很好的優化,但是不恰當的索引使用也會給資料庫帶來效能上的影響。
SQL索引建立需要注意的情況
- 重複索引:一個欄位上建立多個索引,因為見過在主鍵上建立唯一索引的這種二筆寫法,深深地震驚了我。
- 冗餘索引:指多個索引的字首列相同,或者在聯合索引中包含了主鍵的索引 。
現在我們用SQL來查詢一個數據庫的重複索引和冗餘索引
SELECT a.TABLE_SCHEMA, a.TABLE_NAME, a.COLUMN_NAME,
a.INDEX_NAME AS 'index1', b.INDEX_NAME AS 'index2'
FROM information_schema.STATISTICS a
JOIN information_schema.STATISTICS b
ON a.TABLE_SCHEMA = b.TABLE_SCHEMA
AND a.TABLE_NAME = b.TABLE_NAME
AND a.SEQ_IN_INDEX = b.SEQ_IN_INDEX
AND a.COLUMN_NAME = b.COLUMN_NAME
WHERE a.SEQ_IN_INDEX = 1 AND a.INDEX_NAME <> b.INDEX_NAME
查詢結果成對出現,每一對錶示一組重複索引或者冗餘索引。
但是查詢結果只能通過索引字首查詢某一些列被重複建立索引,並不能查詢出哪些聯合索引中包含有主鍵(非第一列值)