3

有没有办法限制count(*)的最大值,所以它在找到N行后停止计算行数?

我尝试了SET ROWCOUNT NTOP N,但是当我使用 SELECT count(*) FROM MyTable 时它们被忽略了。

4

3 回答 3

3
SELECT Count(*)
FROM (
   SELECT TOP(@MaxRowCount) *
   FROM MyTable
) as q

我认为您的WITH解决方案可能性能不佳,因为它必须迭代每一行来分配ROW_NUMBER()。我相信这里的解决方案会表现得更好。

于 2012-11-02T18:36:31.563 回答
1

我自己找到了解决方案。

With OrderedRows AS(
    SELECT ROW_NUMBER() OVER (ORDER BY SomeColumn) AS RowNumber
    FROM MyTable
)
SELECT count(*) FROM OrderedRows WHERE RowNumber <= @MaxRowCount;
于 2012-11-02T16:06:38.647 回答
1

在您进行计数后,您不会使用 IF 语句来执行此操作吗?

或者可能是一个子查询?

从用户 ID 所在的用户中选择 count(*) 作为用户计数(从用户中选择前 5000 个用户 ID)

这将使您的潜在用户数为 5000 或更少。

于 2012-11-02T15:38:56.967 回答