gpt4 book ai didi

sql-server - 获取查询返回的总行数

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

哪个选项更快,为什么?

SELECT
COUNT(1) OVER (PARTITION BY 1), -- Option 1
ROW_NUMBER() OVER ( ORDER BY ac.[dateupdated] DESC) AS RowNum,
FROM MyTable ac
WHERE ac.[idstatus] = @idstatus AND ac.[idtype] = @idtype

SET @TotalRecords = @@ROWCOUNT -- Option 2

这个想法是在 DEV 中,两个选项之间的差异是 1 秒,但在 PROD 中,两个选项都非常接近 0(0.03 秒)。

最佳答案

在实践中,我发现count over非常慢,尤其是对于复杂的查询。更不用说您现在对结果集中的每一行都有计数。

如果您动态生成查询,那么首先执行 select count(*) (使用所有过滤器等)然后执行您想要的实际选择实际上要快得多。

我不确定您是否可以相信 @@ROWCOUNT 在所有情况下都是正确的。例如,如果您将分页添加到查询等中,它会返回什么?我希望它会返回返回的行数(即页面大小)而不是总数。

关于sql-server - 获取查询返回的总行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20326409/

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