首页 > 编程知识 正文

多列索引的使用,组合索引数据结构

时间:2023-05-05 12:26:44 阅读:32693 作者:571

统一索引是对表中的多个列进行索引,统一索引也是b树。 不同的是,统一索引中的键值数大于或等于2,而不是1。

最左匹配原则

在上图中,将索引连接起来的假设为(a,b )。 统一索引也是b树,但是不同的是b树根据索引a对索引b进行排序。 因此,数据按照(1,1 )、1,2 )…的顺序排出。

很明显,对于selete * fromtablewherea=xx andb=xx,可以使用(a,b )连接索引。

对于selete * from table where a=XX,也可以使用(a,b )连接索引。 这两种情况下,叶节点的数据都是有序的。

但是,对于b列查询,selete * from table where b=XX。 此b树索引不可用。 可知叶节点的b值为1、2、1、4、1、2。 由于明显不规则,(a,b )合并索引不可用。

by the way : selete * fromtablewhereb=xx anda=xx也可用于合并索引。 你可能会怀疑这个句子不符合最左边的一致原则。 这是因为存在查询优化程序。 mysql查询优化程序确定以什么顺序执行此sql语句最有效,最终生成真正的执行计划。 所以,当然,当查询顺序尽可能可用于索引时,查询顺序是最有效的,因此mysql查询优化程序最终会按此顺序执行查询。

优化:将联盟索引中最有选择性的列放在索引的开头。

例如,一家公司以age和gender为索引,但很明显age会出现在前面。 因为性别会选择男性和女性两种,所以选择性比age差。

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