索引作为一种有序的数据存储结构,可以按照数据升序顺序存储,也可以按降序存储,因此创建的索引就有升序索引和降序索引。在进行数据排序类访问时(如Order By),可利用索引的有序性来提升访问性能。当访问操作需要按照不同于索引排序的方式访问时(如对索引列降序访问,但只存在升序索引),有的数据库是可以利用升序索引来解决,有的则只能退化为表扫描方式解决。例如在MySQL 8.0中就支持“Backward index scan”来解决此问题。从产品来看,部分产品支持降序索引,部分产品还不支持。
索引的其他能力,这里列举了几种常见的。一是索引提示,针对复杂数据访问场景或优化器尚不稳定时,提示是一种有效的应急/规避手段。上述产品也都支持了此功能。索引合并,是指 Index Merge 功能,大部分产品已经支持,少数产品还不行。索引可见性则是指优化器是否忽略该索引,这对于索引维护、系统优化有一定帮助,上述产品也都支持了。最后则是索引强一致,这也是对索引的最基本要求,也是数据库与中间件产品的差异,上述产品也都支持。