我有一个相当通用的选择查询。当我选择特定结果集的前1245个结果时,它会按预期在不到一秒的时间内运行。但是,如果我运行1246,它会像在无限循环中一样连续运行。我检查了行1245和1246的格式,其数据显示完全正常。我也可以在一个编号超过2300的单独用户组上运行相同的查询,这个用户几乎立即运行,这使我认为它与内存问题无关。
作为查询格式的快速示例:
SELECT TOP 1246 a.id,
(SELECT TOP 1 col_1 FROM table_1 t INNER JOIN table_2 c ON t.id=c.id WHERE t.id=a.id) AS [columnAlias]
FROM table_3 a
对任何有关故障排除的想法持开放态度。
如果我能提供其他可能有用的东西,请问。
答案 0 :(得分:1)
性能差异可能是由于执行计划的变化。您可能想要检查统计信息是否是最新的。
其次,您的查询确实没有意义,因为子查询与外部查询没有关系。所以,您可能会接受您将获得单个值并将其移至from
子句:
SELECT TOP 1246 a.id, col_1 AS [columnAlias]
FROM table_3 a CROSS JOIN
(SELECT TOP 1 col_1 FROM table_1 t INNER JOIN table_2 c ON t.id=c.id);
最后,如果您对查询有其他意图,则应该提出另一个问题。如果你修改了你的问题,你可能会使这个回答无效。
答案 1 :(得分:0)