繁体   English   中英

在没有ORDER BY子句的情况下,为什么SQL Server 2000的行为与SQL Server 2008不同?

[英]Why does SQL Server 2000 behave differently than SQL Server 2008 in the absence of an ORDER BY clause?

我们正在使用SQL Server 2008 R2。 我们有一个称为PD的表(6列),该表没有主键,并且任何列都没有索引。 当我们执行查询时

select * from PD where ESE='bycad'

如果没有ORDER BY子句,则每次执行相同的查询时,我们将以不同的顺序获取结果。 我们曾经拥有SQL Server 2000,直到两个月前,再也没有遇到这个问题。

这是SQL Server 2008中的错误吗? 我知道我们应该使用ORDER BY子句,但是为什么在没有ORDER BY子句的情况下SQL Server 2008处理SQL查询的方式有所不同?

来自SQL Server的任何结果集都是一个集合。 集合没有固有顺序。

除非指定了“ ORDER BY”,否则从未有任何顺序保证从选择语句返回行。 (不仅对于SQL Server,对于任何rdbms都是如此)

编辑:要回答您的问题,每次执行都会看到不同顺序的原因很可能是由表的并行扫描“引起”的。 您是否也获得了新硬件? 但是,如果需要排序结果,则需要指定“ ORDER BY”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM