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