mysql索引优化

mysql用的较多的索引结构是b+树 ,它的特性是:

1、B+树将所有的查找结果放在叶子节点中,这也就意味着查找B+树,就必须到叶子节点才能返回结果; 2、B+树每一个节点的关键字个数和子树指针个数相同; 3、B+树的非叶子节点的每一个关键字对应一个指针,而关键字则是子树的最大,或者最小值; 4、所有非叶子节点都可以看做是key的索引部分

b+树结构图示例

怎么建索引,索引设计原则

  1. 对查询频次高,数据量大的
  2. 索引字段的选择,经常在where子句中的
  3. 使用唯一索引,区分度越高,索引效率越高
  4. 不是越多越好,因为占存储空间,增加、更新、删除的时候需要维护
  5. 使用短索引,减少存储
  6. 利用最左前缀,(复合索引的使用)

索引优化

  1. 组合索引,最左前缀法则
  2. 范围查询,范围字段右边的列不使用索引
  3. 不要在索引列上进行运算操作,否则索引失效
  4. 字符串不加单引号,索引失效
  5. 尽量使用覆盖索引,避免select *(目的是避免回表查询)
  6. or索引失效,如果or前面的列用了索引,但是or后面的列没有索引,那么索引失效
  7. 以%开头like模糊查询,索引失效。如果%在后面则索引生效。可以使用覆盖索引的方式解决
  8. 如果mysql评估使用索引比全表扫描更慢,则不使用索引
  9. is null,is not null有时候走索引,有时候不走索引,主要是看走索引是否比全表快
  10. in走索引,not in不走索引
  11. 尽量使用复合索引,而少使用单列索引

希望对您有所帮助

林明潭blog
请先登录后发表评论
  • latest comments
  • 总共0条评论