Joe*_*Joe 5 sql-server random sql-server-2005
好,
我去年已经做了很多关于返回随机行集的阅读,而我们提出的解决方案是
ORDER BY newid()
Run Code Online (Sandbox Code Playgroud)
这适用于<5k行.但是,当我们获得超过10-20k的行时,我们正在获得SQL超时,执行计划告诉我,76%的查询成本来自此行.当我们有大量行时,删除这一行会使速度增加一个数量级.
我们的用户需要一次这样做多达10万行.
为您提供更多详细信息.
我们有一个包含260万个4位字母数字代码的表格.我们使用随机的一组进入场地.例如,如果我们有一个容量为5000的事件,那么将从表格中抽取5000个这样的随机集合,然后作为条形码发给每个客户,然后门口的条形码扫描应用程序5000的相同列表.使用4位字母数字代码(而不是像GUID这样的愚蠢的长数字)的原因是人们很容易将数字写下来(或将其发送给朋友)并且只是带来编号并手动输入,因此我们不需要大量字符.客户喜欢最后一点btw.
有没有更好的方法ORDER BY newid(),或者有更快的方法从2.6 mil的表中获得100k随机行?
哦,我们正在使用MS SQL 2005.
谢谢,
乔
如果您想生成随机 4 位代码,为什么不直接生成它们而不是尝试从数据库中提取它们呢?
生成从 0 到 1,679,616 的 100k 个唯一数字(这是唯一的四位字母数字代码的数量,忽略大小写 - 260 万行必须有一些重复项)并将它们转换为您的四位代码。
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |