索引

索引

image1

帮助MySQL高效获取数据的数据结构

索引结构

---
  1. B+树的索引
---
  1. 哈希索引

索引分类

InnoDB存储引擎中, 根据索引的存储方式分为以下两种:

简单理解,数据库默认有一个主键用来对应行找,
你给主键id就直接找,如果不是id就利用他找到id,再用id找.

聚集索引存数据(row) ,二级索引存主键–>再通过主键去找row

索引语法

性能分析

  1. 查询频次
  1. 慢查询日志
  1. Show Profile

image18

  1. Explain执行计划查询

image19

image20

image21

索引对于执行效率的提升
image22

查询规则

  1. 最左前缀法则其实就是在说:联合索引只有从最左边的列开始,才能被用上。
    image23

image24

2.遇到范围查询, 后面直接废掉 , 核心规则是:一旦在联合索引里遇到范围查询(> < >= <= BETWEEN LIKE 这种),
它右边的列就不能再用到索引了。等值能走到底,范围就断路.

image25

image26

索引失效情况
情况一
总结:范围不带等于、函数、字符串不带‘’,左边界模糊查询 —>都不走索引

情况二
总结:or条件左右都需要创建索引
数据分布影响: 走不走索引取决于当前数据库表结构相应字段

SQL提示
image27

覆盖索引 和 回表查询
image28

回表就是查到了id再去聚集索引查询
二级索引挂的是id
覆盖索引可以更大可能的避免回表查询

前缀索引

image29

单列索引和联合索引
尽量使用联合索引而不要使用单列索引 , 因为联合索引往往能提供更多的所需的信息

索引的设计原则
image30