检查查询产生的行数时,是否必须执行整个子查询?

时间:2017-10-03 15:28:17

标签: sql sql-server

我的查询需要很长时间才能执行,因此我想计算行数以查看输出的大小。我将前瞻性地使用以下格式:

SELECT COUNT(*) FROM
    (Original_Query) AS COUNT_QUERY

Original_Query用作实际查询的占位符。在我获得计数之前,Original_Query是否必须完整运行?

2 个答案:

答案 0 :(得分:1)

评论太长了。

是。整个查询必须运行。你怎么能得到确切的数?毕竟,你已经写了一个查询。当您告诉SQL Server运行它时,您希望它能够运行。

您可以查看执行计划以获取行数估计值。对于复杂的查询,这可能不会非常准确。

答案 1 :(得分:1)

查询肯定会在这种情况下运行。在不运行的情况下获得结果的一个选项是查看已编译的执行计划中的结果估计。只需在查询之前运行此命令:

SET SHOWPLAN_ALL ON

如果您运行查询,那么您将获得查询计划以及估算值而不是查询结果。甚至可以以编程方式使用它。

有关详细信息,请参阅示例this优秀书籍。