gpt4 book ai didi

sql-server - "order by newid()"- 它是如何工作的?

转载 作者:行者123 更新时间:2023-12-01 18:45:08 25 4
gpt4 key购买 nike

我知道如果我运行这个查询

select top 100 * from mytable order by newid()

它将从我的表中获取 100 条随机记录。

但是,我对它的工作原理有点困惑,因为我在 select 列表中没有看到 newid() 。有人可以解释一下吗?这里的 newid() 有什么特别之处吗?

最佳答案

I know what NewID() does, I'm just trying to understand how it would help in the random selection. Is it that (1) the select statement will select EVERYTHING from mytable, (2) for each row selected, tack on a uniqueidentifier generated by NewID(), (3) sort the rows by this uniqueidentifier and (4) pick off the top 100 from the sorted list?

是的。这几乎是完全正确的(除了它不一定需要对所有行进行排序)。您可以通过查看实际的执行计划来验证这一点。

SELECT TOP 100 * 
FROM master..spt_values
ORDER BY NEWID()

计算标量运算符为每行添加 NEWID() 列(我的示例查询中的表中为 2506),然后表中的行按此列排序,并选择前 100 行。

SQL Server 实际上不需要从位置 100 往下对整个集合进行排序,因此它使用 TOP N 排序运算符来尝试在内存中执行整个排序操作 ( for small values of N )

Plan

关于sql-server - "order by newid()"- 它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4979799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com