有没有办法限制count(*)的最大值,所以它在找到N行后停止计算行数?
我尝试了 SET ROWCOUNT N 和 TOP N ,但是当我使用SELECT count(*)FROM MyTable时会忽略它们。
答案 0 :(得分:2)
SELECT Count(*)
FROM (
SELECT TOP(@MaxRowCount) *
FROM MyTable
) as q
我认为您的WITH
解决方案可能不具备效果,因为它必须迭代每一行才能分配ROW_NUMBER()
。我相信这里的解决方案会表现得更好。
答案 1 :(得分:1)
在你做计数后,你不能用IF语句吗?
或者是子查询?
选择count(*)作为usercount 来自用户 其中userid in(从用户中选择前5000个用户ID)
这将为您提供5000或更低的潜在用户数。
答案 2 :(得分:1)
我自己找到了解决方案。
With OrderedRows AS(
SELECT ROW_NUMBER() OVER (ORDER BY SomeColumn) AS RowNumber
FROM MyTable
)
SELECT count(*) FROM OrderedRows WHERE RowNumber <= @MaxRowCount;