性能優化-索引優化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/