首页 > 编程知识 正文

为什么联合索引要用最左原则,索引最左前缀原则

时间:2023-05-03 23:26:23 阅读:145349 作者:1900

1、单索引和复合索引

单个索引是指索引列是一列,用户可以在多个列中建立索引,这些索引称为复合索引,也称为组合索引。

数据库操作中复合索引的开销很小,可以代替多个单索引。

2、建立复合索引

创建索引:

createindexidx1ontable1(col1、col2、col3) )。

查询(使用索引) :

选择*从表1 where col1=aand col2=band col3=c

此时,查询优化程序使用索引查询,而不是扫描所有表。

3、复合索引使用注意事项:索引最左匹配原则

对于复合索引,在使用查询时,最好按照搜索索引的顺序排列条件,如select * from table1where col1=aand col2=band col3=d。 如果使用where col2=B AND col1=A或where col2=B,则不使用索引。

mysql创建复合索引的规则首先对复合索引的最左侧(即第一个name字段)的数据进行排序,然后根据第一个字段的排序对第二个age字段进行排序。

实际上实现了order by name age这样的排序规则。

因此,第一个name字段是绝对有序的,第二个字段是无序的。 因此,在直接使用第二个age字段进行条件确定时,索引通常不可用。 因为这被称为mysql,所以需要强调最左前缀原则。

那么,age字段的索引什么时候可用? 当然,前提是age字段的索引数据也只能在规则的情况下使用,但什么时候会规则呢? 据观察,当name字段为等值且一致时,age是规则的。

这意味着,在mysql索引规则中,复合索引要使用第二个索引,必须先使用第一个索引,第一个索引必须是等值匹配的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。