gpt4 book ai didi

sql-server - 100k 行以随机顺序返回,请不要出现 SQL 超时

转载 作者:行者123 更新时间:2023-12-02 09:30:44 24 4
gpt4 key购买 nike

好的,

去年我一直在阅读有关返回随机行集的大量资料,我们提出的解决方案是

ORDER BY newid()

这适用于 <5k 行。但是当我们得到 > 10-20k 行时,我们得到了 SQL 超时,执行计划告诉我 76% 的查询成本来自这一行。当我们有大量行时,删除这条线可以将速度提高一个数量级。

我们的用户需要像这样一次最多处理 10 万行。

给大家多一点细节。

我们有一个包含 260 万个 4 位字母数字代码的表格。我们使用其中的一组随机来进入 field 。例如,如果我们有一个容量为 5000 的事件,将从表中随机抽取 5000 个,然后作为条码发给每个客户,然后门口的条码扫描应用程序有相同的 5000 列表。使用 4 位字母数字代码(而不是像 GUID 这样愚蠢的长数字)的原因是人们很容易写下这个数字(或通过短信将其发送给 friend ),然后将数字并手动输入,所以我们不想要大量的字符。客户喜欢最后一点顺便说一句。

有没有比 ORDER BY newid() 更好的方法,或者是否有更快的方法从 260 万个表中获取 100k 随机行?

哦,我们使用的是 MS SQL 2005。

谢谢,

最佳答案

有一篇题为“Selecting Rows Randomly from a Large Table”的 MSDN 文章讨论了这个确切的问题并显示了一个解决方案(不使用排序,而是在生成的列上使用 WHERE 子句来过滤行)。

您的查询缓慢的原因是 ORDER BY子句导致整个表被复制到 tempdb 中进行排序。

关于sql-server - 100k 行以随机顺序返回,请不要出现 SQL 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2322683/

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