使用索引的注意事项

2020-06-01  本文已影响0人  适量哥
  1. 当使用索引列进行查询的时候,尽量不要使用表达式,把计算放到业务层而不是数据库层
select * from user where age + 1 = 2;
  1. 尽量使用主键查询,而不是其他索引,减少回表查询的触发
自然主键、代理主键(与业务层面无关,比如 id)
  1. 使用前缀索引

  2. 使用索引扫描来排序

explain …… /G
using filesort
  1. union all , in , or 都能使用索引,但推荐使用 in
如果是单列索引,or 会走索引的
如果是组合索引,所有列都必须包含(id 主键不算),or 才会走索引
  1. 范围列可以用到索引
范围条件是: >, >=, <, <=, between
范围列可以用到索引,但范围列后面的列无法使用到索引,索引最多用于一个范围列
  1. 强制类型转换、隐式类型转换会发生全表扫描(避免强制类型转换)
# 如果 phone 字段为 varchar 类型
# 不会走索引
select * from user where phone = 137……;
# 走索引
select * from user where phone = '137……';
  1. 更新十分频繁,数据区分度不高的字段上不宜建立索引
  1. 创建索引列,不允许为null,可能会得到不符合预期的结果

  2. 当需要进行表连接的时候,最好不要超过三个表,因为需要 join 的字段,数据类型必须一致

  3. 能使用 limit 的时候尽量使用 limit

  4. 单表索引尽量控制在5个以内

  5. 单索引字段数不允许超过5个(组合索引)

  6. 创建索引的时候应该避免以下错误概念

上一篇 下一篇

猜你喜欢

热点阅读