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