top n通过随机顺序获取行的最佳方法是什么?
我使用的查询如下:
Select top(10) field1,field2 .. fieldn
from Table1
order by checksum(newid())
Run Code Online (Sandbox Code Playgroud)
上述查询中的问题是随着表大小的增加它会继续变慢.它将始终执行完整聚簇索引扫描以top(10)按随机顺序查找行.
还有其他更好的方法吗?
不,这里没有办法提高性能。由于您希望行按“随机”顺序排列,因此索引将毫无用处。但是,您可以尝试按而newid()不是校验和进行排序,但这只是对随机排序的优化,而不是排序本身。
服务器无法知道您想要从表中随机选择 10 行。该查询将计算order by表中每一行的表达式,因为它是无法由索引值确定的计算值。这就是您看到完整聚集索引扫描的原因。
| 归档时间: |
|
| 查看次数: |
2201 次 |
| 最近记录: |