【发布时间】:2016-10-12 02:07:36
【问题描述】:
我有一个包含数百万条记录的事务表(单个主键),并且每天都会添加 100 条记录。
此表随后会进一步用于对账和结算,这仅发生在新插入的记录上,没有任何顺序。
虽然,我在 ID 列上创建了一个聚集索引,但不确定它应该是 ASC 还是 DESC。由于大部分处理都发生在新插入的记录上,所以我想将索引排序为 DESC,但不确定。
我已经在 StackOverflow 上查看了几个关于此的博客和问题,但他们都在讨论带有 order by 子句的复合聚集索引。在我的例子中,有单列聚集索引,不需要 order by。
【问题讨论】:
-
没关系,SQL Server 可以从第一页或最后一页开始遍历索引,效率相同。
-
感谢@RogerWolf 分享评论。您能否分享一些链接或更多详细信息。
-
我认为您不会通过像
select top (1000) * from dbo.Transactions order by Id desc这样的查询来获取这些“新添加的”记录。如果这样做,您通常可以忘记并行处理和任何类型的效率。相反,您将查看一些显示事务当前处于哪个工作流阶段的字段。你会想要一个关于那个领域的索引,相信我。在这种情况下,聚集索引的顺序无关紧要。 -
我认为你是对的。感谢您分享您的想法。
标签: sql sql-server indexing relational-database