CREATE PROCEDURE Test
AS
BEGIN
SELECT * FROM (
SELECT 1 AS a,'test1' as b, 'query1' as c
UNION ALL
SELECT 2 AS a,'test22' as b, 'query22' as c
UNION ALL
SELECT 2 AS a,'test2' as b, 'query2' as c
UNION ALL
SELECT 3 AS a,'test3' as b, 'query3' as c
UNION ALL
SELECT 4 AS a,'test4' as b, 'query4' as c
) As sample
FOR XML RAW
END
我们可以保证存储过程按给定顺序返回结果吗?
通常情况下,当我们将这些选择查询插入临时表时,我们无法保证其插入顺序。所以我们必须使用order by子句。但大部分时间它都给出相同的顺序。我们可以强制执行一些不同的命令吗?这与聚簇索引和非聚簇索引相关。
在第二种情况下,我们可以通过添加标识列来强制执行插入顺序吗?
答案 0 :(得分:1)
插入数据时,SQL将其称为集合。当甚至将数据写入光盘时,它会尝试占用最小的空间并开始在免费页面中插入行,它首先在非均匀的范围内找到。因此,当您查询数据时,结果取决于现金中信息的顺序以及从硬盘读取的信息的顺序。我认为几乎不可能预测订单,因为它取决于操作系统,其他程序等的工作。