gpt4 book ai didi

sql-server - 如何在SQL Server中以最有效的方式确定计数是否大于阈值?

转载 作者:行者123 更新时间:2023-12-03 01:51:07 26 4
gpt4 key购买 nike

我想选择用户是否生成了超过 1000 条日志。考虑到这些查询,我让 SQL Server Studio 显示估计的执行计划。

select count(*) from tbl_logs where id_user = 3

select 1 from tbl_logs where id_user = 3 having count(1) > 1000

我认为第二个应该更好,因为它可以在 SQL Server 找到 1000 行时立即返回。而第一个返回实际的行数。

此外,当我分析查询时,它们在读取次数、CPU 和持续时间方面是相同的。

对于我的任务来说,最有效的查询是什么?

最佳答案

此查询还应该提高性能:

select 1 from tbl_logs order by 1 offset (1000) rows fetch next (1) rows only

当存在超过 1000 行时,您会得到一个 1;当不存在时,您会得到一个空数据集。

它只获取前 1.001 行,就像 Alexander 的答案一样,但之后它的优点是不需要重新计算已获取的行。

如果你希望结果恰好是 1 或 0,那么你可以这样读:

with Row_1001 as (
select 1 as Row_1001 from tbl_logs order by 1 offset (1000) rows fetch next (1) rows only
)
select count(*) as More_Than_1000_Rows_Exist from Row_1001

关于sql-server - 如何在SQL Server中以最有效的方式确定计数是否大于阈值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54707692/

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