都说oracle复合索引必须遵循最左原则,查询条件里要包含索引的第一列,那为什么会出现以下情况呢?
还有一个类似的,复合索引右边的条件走了索引,反而左边没走索引,是优化器做了选择还是?
都说oracle复合索引必须遵循最左原则,查询条件里要包含索引的第一列,那为什么会出现以下情况呢?
还有一个类似的,复合索引右边的条件走了索引,反而左边没走索引,是优化器做了选择还是?
虽然复合索引遵循最左原则,但是在某些情况下,查询条件中不包含索引的第一列也可以使用复合索引。
因为Oracle优化器会根据查询条件的具体情况来选择最优的索引。
举个例子:如果复合索引的第一列是性别,第二列是年龄,查询条件中只包含年龄,那么优化器可能会选择使用该复合索引,因为该索引可以帮助优化器快速定位到符合年龄条件的数据,而性别列的值对查询结果的筛选并没有太大的影响。
同样的道理,如果复合索引右边的条件走了索引,而左边的条件没有走索引,因为优化器认为这样可以更快地定位到符合条件的数据。这种情况下,优化器可能会使用索引的部分列来加速查询,而不是使用全索引。