持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情
索引相关知识二
前文
前面讨论了关于数据库索引的一些基础知识,主要是关于索引分类等等相关的内容。本文将对于关于索引的一些其他知识内容进行总结。本文仅为笔记向内容,内容难免存在不全面及不准确之处。
联合索引与最左匹配原则
首先来看什么是联合索引,联合索引简单来讲是索引所选取的字段为多个,由多个字段共同来组成一组索引。之所以说一组,是因为对于联合索引来讲,实际上会自动生成多个索引。例如我们采用字段a.b.c共同组成联合索引,那么实际得到的索引共有以下三个:a,a_b,a_b_c。也就是按照从左到右的顺序自动进行生成。
而与联合索引关联的则是索引的最左匹配原则。在实际的sql语句进行查询时,会根据字段按照从到到右的顺序进行索引内容的匹配。当我们的语句为select * from test where a=1,b=2,c=3时,则会匹配到上述的a_b_c索引。而当我们查询的语句为selct * from test where a = 1,c=3,b=2时,则只能够匹配索引a。简单来讲也就是索引的匹配是需要按照从左到右的顺序进行的。与此同时,当匹配遇到范围查找时,例如大于、小于、between、like等等,会不再进行后续的数据匹配。而对于字符串类型的索引来讲,条件语句必须带有引号,like则只能匹配左侧固定的数据,"王%",其他类型的like匹配同样不能生效。
索引下推
提到索引下推,这是数据库后期所引入的一个概念。该概念主要是对于sql语句执行过程中的优化。在进行优化前, 当遇到多条件查询时,会根据第一个字段进行索引查找,而其他的内容需要在查询结果中进行第二次的逻辑过滤。而通过索引下推,会将索引中包含的其他字段的内容,在进行索引中数据查询时自动进行过滤。因此从索引中所获得的主键数目会显著减少,以此方式变减少回表到聚簇索引中数据的检索,从而实现查询效率的提升。索引下推,也就是将多条件索引查询时的其他条件,放到引擎层面直接进行查找,以此方式减少回表次数提升效率。
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。