在大多数包含日期列的表中,我们通常会查询最近的信息。
一般来说,将日期列按降序索引是个好主意吗?
一般来说,将日期列按降序索引是个好主意吗?
虽然不熟悉Oracle的内部机制,但我了解它如何与Postgres配合工作:
索引被聚集在一起以便所有意图。因此,如果它们按升序排序并且新行始终添加到其末尾(例如created_at、updated_at、billed_at等),则新行将被追加(或几乎是)而不是前置插入(导致磁盘页分裂)。这样会更快。
查询规划器可以愉快地反向读取索引。因此,如果它是单列索引,则任何方式都可以--使用最自然的方式来插入新行。
当索引按相反顺序排序时,可能会变得有趣的地方,是当你有一个多列索引时。比如,在审计日志表中使用(id, created_at desc)
。这实际上是一个糟糕的例子,但这里的重点是:如果您按id, created_at desc
排序,则索引将按原样使用。