最左前缀原则、覆盖索引、索引下推、联合索引的概念

最左前缀原则

什么是最左匹配原则?

举个例子:比如有abc组成的联合索引,能走的索引可以是a,ab,abc。不能是bc这样的,如果条件上先b后c,那么就是全表查询,不走索引了。可以使联合索引的最左边的N个字段,也可以是字符串的前m个字符。

覆盖索引

覆盖索引它是一个概念,不是索引类型。举个例子:一个二级索引(辅助索引),通过二级索引找到这个叶子结点,然后拿到主键,在进行回表去查找所需要的数据。覆盖索引是使用辅助索引的时候,不需要通过辅助索引去拿到主键在回表,通过辅助索引就直接能查到要找的数据。其实我认为这是数据库设计的一种思想。

索引下推

索引下推:在MySQL5.6加入的,以前不具备这个功能。是当你使用到索引查询数据的时候,如果有where条件,那么就会在存储引擎中就去判断,而不用去到MySQL服务器中再去判断。

使用索引下推的好处是可以减少存储引擎访问基础表的次数,同时也减少了MySQL服务器接收存储引擎中数据的次数。

联合索引

我认为就是几个字段放在一起组成了一个索引B+树。

根据创建联合索引的顺序,按照最左前缀匹配原则进行条件查找。考虑实际的情况,将查询频繁查询的放在前边创建索引。解释:现在有abc,这三个字段的联合索引(索引树),如果c查找的频率高一点相较于ab,那么遵循最左前缀原则的情况下走索引的顺序是a->b->c。如果是cab,按照这个顺序创建的索引,那么就第一次查询就直接命中了。减少查询次数。

你可能感兴趣的:(MySQL,mysql,数据库)