增加索引會有利於查詢效率,但會降低insert,update,delete的效率,但實際上往往不是這樣的,過多的索引會不但會影響使用效率,同時會影響查詢效率,這是由於資料庫進行查詢分析時,首先要選擇使用哪乙個索引進行查詢,如果索引過多,分析過程就會越慢,這樣同樣的減少查詢的效率,因此我們要知道如何增加,有時候要知道維護和刪除不需要的索引
重複索引:重複索引是指相同的列以相同的順序建立的同型別的索引,如下表中的 primary key和id列上的索引就是重複索引
create table test(
id int not null primary key,
name varchar(10) not null,
title varchar(50) not null,
unique(id)
)engine=innodb;
冗餘索引:冗餘索引是指多個索引的字首列相同,或是在聯合索引中包含了主鍵的索引,下面這個例子中key(name,id)就是乙個冗餘索引。
create table test(
id int not null primary key,
name varchar(10) not null,
title varchar(50) not null,
key(name,id)
)engine=innodb;
說明:對於innodb來說,每乙個索引後面,實際上都會包含主鍵,這時候我們建立的聯合索引,又人為的把主鍵包含進去,那麼這個時候就是乙個冗餘索引。3、如何查詢重複索引
工具:使用pt-duplicate-key-checker工具檢查重複及冗餘索引
4、索引維護的方法
由於業務變更,某些索引是後續不需要使用的,就要進行刪除。在mysql中,目前只能通過慢查詢日誌配合pt-index-usage工具來進行索引使用情況的分析;
附:
SQL索引優化方法
sql索引優化方法 以下是 片段 select top 50 row number over order by resumecreatetime desc as rowid topdegree degreerankid userresume userresumeid userresume useri...
效能優化 SQL優化
1.列型別盡量定義成數值型別,且長度盡可能短,如主鍵和外來鍵,型別字段等等 2.建立單列索引 3.根據需要建立多列聯合索引 當單個列過濾之後還有很多資料,那麼索引的效率將會比較低,即列的區分度較低,那麼如果在多個列上建立索引,那麼多個列的區分度就大多了,將會有顯著的效率提高。4.根據業務場景建立覆蓋...
SQL優化 索引優化
一 發現哪些sql語句有效能問題 開啟mysql慢查詢日誌對sql語句進行監控 show variables like slow query log 檢視是否開啟慢查詢日誌 set global slow query log on 開啟慢查詢日誌 set global log queries not...