选择的结果顺序

时间:2013-02-26 09:22:25

标签: sql sql-server

我有一个有趣的问题: 我有一个函数,它以逗号分隔整数字符串。

以下是2次执行:

select ID from dbo.udf_NumList2table ('124,126,132,180,176')
select RP.ID, My.ID 
from dbo.udf_NumList2table ('124,126,132,180,176') RP join MyTable My
        on RP.ID=My.ID

在第一次执行中,结果的顺序类似于字符串中数字的顺序。 在第二次执行中,结果的顺序是升序的(176之前的176)。

为什么呢?我想MyTable中的列ID上的PK是原因 - SQL更喜欢在密钥上运行。

我是对的吗?

1 个答案:

答案 0 :(得分:2)

选择保证不对结果进行排序,因此每次运行时甚至不能保证结果相同,但在您的情况下,由于数据太小,它们将是相同的。订单对于优化器来说是最方便的,所以你的猜测在这里可能是正确的。

在更高的数据量上,查询可以在不同的执行线程中进行拆分,因此提供更加混乱的顺序,并且根据服务器上的工作负载在运行之间可能会有所不同。

要获得一致的顺序,您必须使用ORDER BY子句。