OceanBase 数据库中,索引是一个 B+ 树结构,索引扫描遵循 B+ 索引的匹配规则:
l 条件的先后顺序不影响索引能效,如where A = ? and B = ? 和 where B = ? and A = ? 效果相同
l 按照索引字段的顺序匹配,一旦前面的索引字段缺失,后面的索引字段无法参与匹配
l 遇到第一个范围查询字段后,后续的字段不参与匹配
l 查询条件中的索引字段如果不能参与匹配,依然可以提供扫描过滤
这个除了第一个好难理解啊,哪位大神可以解释一下
OceanBase 数据库中,索引是一个 B+ 树结构,索引扫描遵循 B+ 索引的匹配规则:
l 条件的先后顺序不影响索引能效,如where A = ? and B = ? 和 where B = ? and A = ? 效果相同
l 按照索引字段的顺序匹配,一旦前面的索引字段缺失,后面的索引字段无法参与匹配
l 遇到第一个范围查询字段后,后续的字段不参与匹配
l 查询条件中的索引字段如果不能参与匹配,依然可以提供扫描过滤
这个除了第一个好难理解啊,哪位大神可以解释一下
个人理解:
2、B+ 树索引的结构是排序的。索引 (a, b, c) 首先是按 a 排序,在 a 相同的情况下按 b 排序,在 a, b都相同的情况下再按 c 排序。如果你跳过 a 直接查询 b ,索引的排序结构对于查找 b 来说就是无序的 ,无法进行快速定位。
3、B+ 树索引的有序性是局部的。对于范围查询(如 a > 100),数据库会定位到 a=100 的位置,然后向后扫描所有满足 a > 100 的叶子节点。这些节点中的 a 值是有序的,但对于 b 和 c 来说,它们的值在全局范围内是无序的
4、 指的是那些不满足“最左前缀”或位于“范围查询之后”的字段的作用。它们虽然不能帮助数据库快速定位 到数据块,但可以在索引扫描(Index Scan)的过程中进行过滤(Filter)
感谢大神
也是按照最左匹配原则来吧
学习
学习
学习了