use*_*173 6 performance sql-server
当查询编写如下时,SQL Server 显示性能大幅下降:
select top 101 name
from Dogs
order by name
Run Code Online (Sandbox Code Playgroud)
与选择前 100 名相比。
据我所知,发生这种情况的原因是top 100+查询中的 SQL Server只是简单地对所有数据集进行排序并选择顶部记录(而前 100 个和更少的查询使用更复杂的算法)。
是否有任何解决方法?
Bre*_*zar 11
“据我所知,发生这种情况的原因是,前 100 多个查询中的 SQL Server 只是对所有数据集进行排序并选择前100 条记录(而前 100 条及更少的查询使用更复杂的算法)。”
您的两个查询可能具有不同的执行计划。引擎中有一些硬编码表明前 100 名的表现会有所不同,但您可能会遇到类似溢出到 TempDB 的问题。
要根据您面临的查询确定并获得自定义建议,您可以发布执行计划以供下载。如有必要,您可以使用 SQL Sentry Plan Explorer 将它们匿名化。发布实际计划,而不是估计计划。
| 归档时间: |
|
| 查看次数: |
1998 次 |
| 最近记录: |