选择顶部没有orderby

时间:2012-06-14 21:24:38

标签: sql sql-order-by

所以今天我正在编写一些查询并在查询中使用top 10只是为了获得一些没有orderby的示例数据,并注意到它实际上是在每次调用时返回不同的数据。它似乎并不随机,因为它是一个包含数百万行的表,并且一些条目总是显示出来,而其他条目则改变了每个调用。当没有指定orderby时,后端有什么逻辑可以决定返回哪些行?我正在使用SQL Server 2008r2,但如果在其他数据库中处理方式不同,我会感兴趣。

1 个答案:

答案 0 :(得分:2)

当然订单完全未定义。但我会尝试在实际实现中提及一些实际原因,因为这是明确要求的。这是一个小样本:

  • 并行查询计划
  • 以随机顺序返回的预读结果
  • 由于某种原因,执行计划发生了变化
  • 读取列存储索引按内部顺序返回行
  • SQL Server正在选择无序索引扫描,该扫描按分配顺序读取页面而不是按逻辑顺序读取(例如,通过重新组织表可以更改分配顺序)

这些原因特定于SQL Server。