繁体   English   中英

检查是否存在多于 x 行的最有效方法是什么?

[英]What is the most efficient way to check if more than x rows exist?

我需要检查大型数据库中是否有超过 x 行。 我想出了这个:

SELECT 1 FROM (SELECT NULL AS X FROM [Meta].BannerViews 
WHERE CustomerId='6cc639d6-eb07-49bb-9f8d-e3d0d6f063ae') AS T0 HAVING COUNT(*) > X

但这是最有效的方法吗? 让我们保持 COUNT(*) 为 100_000+ 且 X = 2。

在这个特定实例中,最快的方法是将TOP(@X + 1)添加到内部查询中,这意味着当超过该数字时它会退出

SELECT 1
FROM (
    SELECT TOP (@X + 1) NULL AS X FROM [Meta].BannerViews 
    WHERE CustomerId = '6cc639d6-eb07-49bb-9f8d-e3d0d6f063ae'
) AS T0
HAVING COUNT(*) > @X;

如果您想计算整个表,而不仅仅是一个子集,并且不介意一个近似的答案,那么使用这个问题的解决方案之一:
计算一个非常大的表中确切行数的最快方法?
这些在此处不起作用,因为您正在计算表的子集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM