性能優化-索引優化SQL的方法
- 2020 年 2 月 13 日
- 筆記
4、索引優化SQL的方法
1、索引的維護及優化(重複及冗餘索引)
增加索引會有利於查詢效率,但會降低insert,update,delete的效率,但實際上往往不是這樣的,過多的索引會不但會影響使用效率,同時會影響查詢效率,這是由於資料庫進行查詢分析時,首先要選擇使用哪一個索引進行查詢,如果索引過多,分析過程就會越慢,這樣同樣的減少查詢的效率,因此我們要知道如何增加,有時候要知道維護和刪除不需要的索引
2、如何找到重複和冗餘的索引
重複索引: 重複索引是指相同的列以相同的順序建立的同類型的索引,如下表中的 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工具檢查重複及冗餘索引
pt-duplicate-key-checker -uroot -padmin -h 127.0.0.1

4、索引維護的方法 由於業務變更,某些索引是後續不需要使用的,就要進行刪除。在mysql中,目前只能通過慢查詢日誌配合pt-index-usage工具來進行索引使用情況的分析;
pt-index-usage -uroot -padmin /var/lib/mysql/mysql-host-slow.log

附:https://www.percona.com/downloads/

