1. 程式人生 > >MySQL查詢重複索引和冗餘索引

MySQL查詢重複索引和冗餘索引

索引的建立對資料庫的查詢效能有很好的優化,但是不恰當的索引使用也會給資料庫帶來效能上的影響。

SQL索引建立需要注意的情況

  1. 重複索引:一個欄位上建立多個索引,因為見過在主鍵上建立唯一索引的這種二筆寫法,深深地震驚了我。
  2. 冗餘索引:指多個索引的字首列相同,或者在聯合索引中包含了主鍵的索引 。

現在我們用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

查詢結果成對出現,每一對錶示一組重複索引或者冗餘索引。
但是查詢結果只能通過索引字首查詢某一些列被重複建立索引,並不能查詢出哪些聯合索引中包含有主鍵(非第一列值)