标识列和查询中的使用顺序

时间:2012-10-27 15:15:45

标签: sql-server sql-server-2008-r2

我使用SQL Server 2008 R2,并将id列的表格设为identity(1,1)。如果我想按id列命令查询,请务必使用Order By ID或不必要。

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

如果省略ORDER BY,则订单不可预测。因为这样的SQL语句不要求显式顺序,所以SQL Server可以在准备好后返回结果。

这意味着:

  • 订单完全取决于执行计划。

  • 某些过滤条件返回的订单可能会有所不同 情况下

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

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

如果我们需要获得有序列表,我们必须使用显式ORDER BY子句。然后我们可以确定订单。只有这样。

答案 2 :(得分:1)

如果未使用“ORDER BY”,则无法保证表格的顺序。