VVL1295

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

    1,where,group by,order by,on 中出现的列;

    2,索引字段越小越好;

    3,离散度大的列放在联合索引的前面;

      select * from payment where staff_id = 2 and customer_id = 584;

      应该使用 index(customer_id, staff_id) 而不是index(staff_id, customer_id),因为 customer_id 的离散度更大;

  索引优化 SQL:

    去除重复的索引(重复的索引影响效率);

    去除冗余索引(冗余的索引音响効率),冗余索引指的是多个索引的前缀列相同,或是在联合索引中包含了主键的索引,例如 key(name, id);

     使用 pt-duplicate-key-checker 工具(也是使用 Percona 的工具集,要先安装好 DBD:mysql ,考虑到以后都是在 linux 环境下安装使用的,这里就不在 Windows 下安装了,待需要的时候再补充)检查重复及冗余索引,

     命令(window 下)为:perl C:pt-duplicate-key-checker.pl -u xx -p ‘xx’ -h mysql 所在的 ip;

    去除不再使用的索引(不再使用的索引影响效率):也使用 percona 的工具,perl C:pt-index-usage.pl -u xx -p 'xx' xxx-slow.log;

 

    

 

posted on 2016-12-20 21:38  bobo2018  阅读(81)  评论(0)    收藏  举报