Vig*_*esh 1 sql sql-server-2000 sql-server-2008 sql-server-2008-r2
我们正在使用SQL Server 2008 R2.我们有一个名为PD(6列)的表,它有一个NO主键,没有任何列的索引.当我们执行查询时
select * from PD where ESE='bycad'
Run Code Online (Sandbox Code Playgroud)
如果没有ORDER BY子句,我们每次执行相同的查询时都会以不同的顺序获得结果.我们曾经在两个月前使用SQL Server 2000并且从未遇到过这个问题.
这是SQL Server 2008中的错误吗?我知道我们应该使用ORDER BY子句,但为什么SQL Server 2008在没有ORDER BY子句的情况下处理不同的SQL查询?
来自SQL Server的任何结果集都是一个集合.集合没有固有的顺序.
除非指定了"ORDER BY",否则从没有任何命令保证行从select语句返回.(对于任何rdbms而言,这都适用于SQL Server)
编辑:要回答您的问题,您在每次执行时看到不同顺序的原因很可能是由表的并行扫描"引起".你有新的硬件吗?但同样,如果您需要订购结果,则需要指定"ORDER BY".