聚集索引,单个单一的订单,没有order by子句

时间:2016-10-12 02:07:36

标签: sql sql-server indexing relational-database

我有一个包含数百万条记录的交易表(单个主键),每天都有100条记录被添加。

此表格进一步用于对帐和结算,仅在新插入的记录中发生,没有任何订单。

虽然,我在ID列上创建了一个聚簇索引,但不确定它是ASC还是DESC。由于大多数处理都发生在新插入的记录上,所以我想将索引命名为DESC但不确定。

我已经在StackOverflow上检查了几个关于此问题的博客和问题,但他们都讨论了带有order by子句的复合聚簇索引。在我的情况下,有单列聚簇索引,不需要按顺序排序。

1 个答案:

答案 0 :(得分:0)

这取决于...对于某些操作,例如ORDER BY,因为索引是双向的,所以不需要排序。

但对于排名,索引扫描等其他操作而言,这很重要。 SQL Engine旨在使用并行执行正向索引扫描,但如果查询优化器需要反向索引扫描,则此类操作是单线程的。因此,如果您选择了错误的排序顺序,它可能会影响性能。

这实际上取决于数据库中的数据和查询,所以我建议捕获最频繁的用户查询(针对该表),并检查两个不同排序顺序的执行计划和IO统计信息。

如果添加的数据与索引排序顺序的顺序不同,它也会导致索引碎片。