【问题标题】:Clustered Index Descending for Paging用于分页的聚集索引降序
【发布时间】:2013-12-14 16:39:23
【问题描述】:

我有一个显示所有最新帖子的屏幕,当用户单击阅读更多链接时,我会根据帖子 ID 带来下一组(其中 id

我有一个聚集索引在 Posts 表上的字段 Id 上升序。

我想知道我是否总是首先显示最新帖子,创建聚集索引降序不是更好吗?

谢谢

【问题讨论】:

标签: sql-server performance


【解决方案1】:

在这种情况下没关系。 SQL Server 可以使用升序索引并向后扫描。扫描方向在 Clustered Index Seek 运算符的属性中可见。

样本数据:

create table T
(
  ID int identity,
  constraint PK_T_ID primary key clustered (ID asc)
)

go

insert into T default values

go 10

查询:

select top(3) *
from T
where ID < 7
order by ID desc

查询计划:

选择聚簇索引扫描操作符并按 F4 查看属性。

【讨论】:

  • 我想知道为什么在创建索引时可以选择指定方向?这是什么帮助?
  • @SQLhint.com - 向后扫描不能并行化,并且对于某些实际可以使用它们的窗口函数查询并不总是考虑。主要用途是在复合索引中。如果您想使用索引来避免对查询ORDER BY A DESC, B ASC 进行排序,那么A ASC, B ASC 上的索引将无济于事。
  • 对于查询,降序或升序没有区别。但是对于插入,递增 PK 上的降序聚集索引将导致第一页的不断重组。这里有一个类似问题的好答案:stackoverflow.com/a/649319/441729
猜你喜欢
  • 2020-08-04
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 2021-11-24
  • 2011-06-15
  • 1970-01-01
相关资源
最近更新 更多