sql优化之索引优化

Posted by Heber on June 25, 2018

如何选择合适的列建立索引

1.在where从句,group从句,order by从句,on从句中出现的列。 2.索引字段越小越好 3.离散度大的字段放在联合索引的前面

通过查询字段唯一值来判断字段的离散度

select count(distinct 字段名),count(distinct 字段名) from 表名;

删除重复及冗余索引

1.重复索引是指相同的字段以相同的顺序建立的同类型的索引 2.冗余索引是指多个索引的前缀列相同,或是在联合索引中包含了主键的索引

推荐使用pt-duplicate-key-checker工具检查重复及冗余索引

pt-duplicate-key-checker \
-uroot \
-p '密码'\
-h 127.0.0.1

删除不用索引

在perconMysql和mariaDB中可以通过INDEX_STATISTIC表来查看哪些索引未使用,但在Mysql中目前只能通过慢查询日志配合pt-index-usage工具来进行索引使情况的分析。

pt-index-usage \
-uroot -p '密码' \
mysql-slow.log