Nic*_*net 6 database oracle indexing
在大多数具有日期列的表中,我们"通常"会查询最近的信息.
按"降序"对日期列"一般"进行索引是一个好主意吗?
不熟悉Oracle的内部,但这是我对Postgres如何工作的理解:
索引是针对所有意图和目的而聚类的.因此,如果您订购了asc并且新行总是添加到它的末尾(例如created_at,updated_at,billed_at等),您的新行将被追加(或几乎如此)而不是前置(导致磁盘页面)拆分).这更快.
您的查询计划程序将很乐意以相反的顺序读取索引.因此,如果它是单个列索引,则可以使用 - 在使用案例中如何插入新行时使用最自然的.
如果以相反顺序排序的索引可能会变得有趣,那么当您有多列索引时.比如说,(id, created_at desc)
在审计日志表中.这实际上是一个不好的例子,但重要的是:如果您按顺序排序id, created_at desc
,索引将按原样使用.
除非您看到显着的性能改进,否则您可能希望避免降序索引。降序索引实际上是基于函数的索引,并且有一些限制。
例如,根据SQL Reference,唯一降序索引不允许多个 null,并且在分析索引和表之前不会使用降序索引。(尽管我无法重现第二个限制。)
此外,基于函数的索引有点不同,并且往往会破坏每个人编写的索引维护脚本。这并不是避免它们的好理由,只是需要注意的事情。