如何衡量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
答案 0 :(得分:3)
CTE不作为单独的查询运行。整个查询已优化并作为单个实体运行。
某些数据库倾向于实现CTE(即将结果存储为临时表)。其他数据库倾向于将它们合并到引用它们的执行计划中。
但是,没有任何要求CTE单独运行。因此,如果您想要估计时间长度,只需将CTE作为单独的查询运行。