2

我使用 SQL Server 2008 R2 并有一个表,其id列为identity(1,1). 如果我想获取按 id 列排序的查询,必须使用Order By ID或不需要。

编辑: 我在 ID 列上有一个唯一的聚集索引。做这个索引保证我的查询默认按 id 排序。

4

3 回答 3

2

没有默认排序顺序。即使该表具有聚集索引,也不能保证您按该顺序获得结果。

必须将子句指定为ORDER BY所需的排序顺序。

于 2012-10-27T15:19:52.407 回答
2

在省略 ORDER BY 的情况下 - 顺序是不可预测的。因为这样的 SQL 语句不要求明确的顺序,所以 SQL Server 可以在结果准备好时返回结果。

这意味着:

  • 该顺序绝对取决于执行计划。

  • 针对某些过滤条件返回的顺序,在其他情况下可能会有所不同

  • 聚集索引在某些情况下甚至可能用于某些执行计划。在这些情况下(不使用时) - 不考虑其顺序。

对于某些选择,可以使用其他覆盖索引(不是按 ID 排序的)。这将导致“意外”订单。

如果我们需要获取Ordered list,我们必须使用显式的 ORDER BY 子句。然后我们可以确定订单。只有这样。

于 2012-10-27T15:25:21.357 回答
1

不使用“ORDER BY”时,不保证表的顺序。

于 2012-10-27T15:26:50.200 回答