什么会导致SQL Server 2005以不同的顺序返回SELECT
的结果。哪些情况会导致select返回不同的订单
注意: 我不知道,如果该事项,但查询有一个非唯一列的Order by
条款(日期栏要具体)和表是一个临时表。
编辑: 我知道,如果我不会指定它的顺序是没有保证的,但平时基本一致,直到事情发生。
我想知道这会发生什么“事情”。
谢谢。
什么会导致SQL Server 2005以不同的顺序返回SELECT
的结果。哪些情况会导致select返回不同的订单
注意: 我不知道,如果该事项,但查询有一个非唯一列的Order by
条款(日期栏要具体)和表是一个临时表。
编辑: 我知道,如果我不会指定它的顺序是没有保证的,但平时基本一致,直到事情发生。
我想知道这会发生什么“事情”。
谢谢。
如果按非唯一列进行排序,那么在对该列进行保证排序后,给定组内的行的顺序不保证 - 正如awm所说的那样,取决于数据库。插入可以更改顺序,连接可以更改顺序,更新可能会更改顺序。
如果您需要保证订单,请在您的order by
中指定一组保证订单的列。
如果在ORDER BY
列中有重复的值,那么这些值的顺序是未定义的。订单是数据库发现最方便的任何事情,并且可以随时因任何原因而更改。
谢谢,但请参阅编辑。 – 2011-02-15 09:33:25
即使是内部垃圾收集,东西也可能是任何东西,但它很可能是表更新或优化。 – awm 2011-02-15 09:40:46
说不过去,为什么它应该改变并不重要,如果有的话。
查询引擎特定文档订单是未指定如果您没有实际指定它。
一如既往,依靠无证行为的一般建议是不要做!
原因,它可能会改变(毫无疑问的是别人的,但为什么你的运气?):
你说
我知道订单不是 保证如果我不指定它,但 它通常一致,直到 发生。
我想你的意思是说
我知道,为了不 保证,如果我不指定,所以 它总是不可靠的,无论怎样 一致的外观。
任何影响查询优化程序关于执行计划的决定都会改变无序行的顺序。
更新如何更改订单? – 2011-02-15 09:34:18