作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想选择用户是否生成了超过 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/
我是一名优秀的程序员,十分优秀!