SQL如何测量CTE执行时间

时间:2017-12-11 14:03:06

标签: sql sql-server sql-server-2008

如何衡量CTE执行时间?我希望能够记录CTE之间的时间。例如:

--log time here 1 -> insert into log(...) values(...)

WITH cte1
AS (
    SELECT 1 AS id
    )
    --log time here 2-> insert into log(...) values(...)
    ,cte2
AS (
    SELECT 2 AS id
    )

--log time here 3-> insert into log(...) values(...)

SELECT *
FROM cte1

UNION ALL

SELECT *
FROM cte2

1 个答案:

答案 0 :(得分:3)

CTE不作为单独的查询运行。整个查询已优化并作为单个实体运行。

某些数据库倾向于实现CTE(即将结果存储为临时表)。其他数据库倾向于将它们合并到引用它们的执行计划中。

但是,没有任何要求CTE单独运行。因此,如果您想要估计时间长度,只需将CTE作为单独的查询运行。