如果使用TOP,如何判断SQL服务器是否正在修剪结果?

时间:2015-05-07 13:13:52

标签: c# sql sql-server sql-server-2008-r2 sql-server-2012

我有这个SQL查询:

SELECT TOP 10 * FROM MyTable

如何判断结果是否缩短,即MyTable实际上有多于10行?

4 个答案:

答案 0 :(得分:9)

最简单的方法是添加一个COUNT..OVER列,该列返回同一查询中表中的总行数:

SELECT TOP 10 *, COUNT(*) OVER() As TotalRows FROM MyTable

在执行FROM和WHERE子句之后计算 之前的

答案 1 :(得分:5)

金手指:

SELECT TOP 11 * FROM MyTable

并检查是否有11行:-)然后忽略第11行。请注意,根据您撰写的评论,您可能无法理解:您执行此查询而不是TOP 10查询。

如果有< = 10行,那么整个结果集将由TOP 10返回。如果有11行,那么显然TOP 10就不够了。

答案 2 :(得分:2)

您可以使用COUNT获取总行数。

SELECT COUNT(*)
FROM MyTable

您可以检查结果是否大于10,以确定它是否超过10行。

答案 3 :(得分:0)

您可以使用count(*)作为额外列返回总行数。

这样的事情:

select top 10 T1.*, T2.Total
from MyTable as T1
    outer apply (select count(*) as Total from MyTable) as T2