mysql优化——小细节

内容纲要
  • 当使用索引列查询数据是,尽量不要使用表达式,否则不能正常的使用索引

  • 尽量使用主键查询,可避免回表

  • 可视情况使用前缀索引,减少索引存储空间,确定索引长度的计算方式如下,值越大越好,说明区分度越高

  • 使用索引扫描来排序

  • 推荐使用in替换union all or关键字

  • 范围条件可以用到索引,但范围后面的列无法使用到索引

  • 强制类型转换,会导致全表扫描,列值类型应该尽量和定义的类型一致

  • 更新频繁,数据区分度不高的列上不宜创建索引

    • 更新频繁会导致索引树频繁更新,带来更多的IO
    • 区分度不高,索引并不能有效的过滤数据,一般区分度80%以上可以建立索引

      区分度计算:count(distinct 列名)/count(*)

  • 创建索引的列,不允许为 null

通常列都不建设置成 null,因为 null不等于任何值,会出现意料这外的情况

  • 当需要进行 join 查询时,建议不超过 3 张表,因为需要 join 的字段,数据类型必须一致

  • 能用 limit 时尽量使用 limit

  • 单表索引建议控制在5个以内

  • 单索引字段不要超个5个(组合索引)

  • 过早优化其实是万恶这源,有针对性的优化效果更加显著

发表评论

邮箱地址不会被公开。 必填项已用*标注

52 + = 55