zoukankan      html  css  js  c++  java
  • 索引优化策略

    在表上创建索引后,如何使用到这些索引需要注意的问题。

     

    1.索引列上不能使用表达式或函数。

    例如:

    select * from users where upper(name)=’ABC';

    改成

    select * from users where  name=’ABC';

     

    2.前缀索引和索引列的选择性

    索引的选择性越高索引效率越高。

     

    3.联合索引

    如何选择索引列的顺序

    1.经常会被使用到的列优先

    联合索引的列索引顺序是从左到右使用的。

    2.选择性高的列优先

    选择性很差的列不宜放到最左边。比如状态列。

    3.宽度小的列优先

     

    4.覆盖索引

    索引中包含了所有查询的字段的情况的索引。

    优点:

    可以优化缓存,减少磁盘IO操作。

    可以减少随机IO 变随机IO为顺序IO操作。

    避免对INNODB主键索引的二次查询

    可以避免myisam表进行系统调用

    无法使用覆盖索引的情况:

    1.存储引擎不支持覆盖索引

    2.查询中使用了太多的列。

    3.使用了双%号的like查询

     

    5.使用索引扫描优化排序

      索引的列顺序和order by 子句的顺序完全一致

    索引中所有列的方向(升序和降序)和order by 子句完全一致

    order by 中 的字段全部在关联表中的第一张表中。

     

    6.利用索引优化锁

    1.索引可以减少锁定的行数

    2.索引可以加快处理速度,同时加快锁的释放。

     

    7.删除重复和冗余的索引

    重复的索引:

    比如:

    primary key(id),unique key (id) ,index (id);

    这样索引就重复了

    冗余的索引:

    index(name) ,index(name,age) 联合索引,那么 index(name) 就冗余了。

     

    可以使用工具

    pt-duplicate-key-checker –h=localhost 检查重复索引。

     

    查找未被使用过的索引:

     

    更新索引统计信息及减少索引碎片

    analyze table table_name;

  • 相关阅读:
    WEB手机端界面绝对定位分辨率扩大导致错乱问题和块级元素旋转角度CSS
    8.1 设置滑动效果和多媒体
    2.4 链接文字属性和标记元素
    2.3元信息标记 meta
    记录这几天工作内容发现的兼容性问题
    WEB前端开发工程师成长之路(计划)
    IE兼容CSS3圆角border-radius的方法
    Quirks模式是什么?
    让所有浏览器包括IE6即支持最大宽度又支持最小宽度。
    ie6下png背景显示问题?
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/5934087.html
Copyright © 2011-2022 走看看