sql-server – 如果在查询中定义了CTE并且从未使用它,它是否发出声音?
发布时间:2020-05-28 19:57:40 所属栏目:MsSql 来源:互联网
导读:查询中未使用的CTE是否会影响性能和/或更改生成的查询计划? 它们似乎没有,但这实际上只适用于嵌套的CTE. 创建两个临时表: CREATE TABLE #t1 (id INT);INSERT #t1 ( id )VALUES ( 1 );CREATE TABLE #t2 (id INT);INSERT #t2 ( id )VALUES ( 1 ); 查询1: WIT
|
查询中未使用的CTE是否会影响性能和/或更改生成的查询计划? 解决方法它们似乎没有,但这实际上只适用于嵌套的CTE.创建两个临时表: CREATE TABLE #t1 (id INT); INSERT #t1 ( id ) VALUES ( 1 ); CREATE TABLE #t2 (id INT); INSERT #t2 ( id ) VALUES ( 1 ); 查询1: WITH your_mom AS (
SELECT TOP 1 *
FROM #t1 AS t
),also_your_mom AS (
SELECT TOP 1 *
FROM #t2 AS t
)
SELECT *
FROM your_mom;
查询2: WITH your_mom AS (
SELECT TOP 1 *
FROM #t1 AS t
),also_your_mom AS (
SELECT TOP 1 *
FROM #t2 AS t
)
SELECT *
FROM also_your_mom;
查询计划: 有一个开销,但查询的不必要部分很早就消除了(在这种情况下解析期间;在更复杂的情况下的简化阶段),因此额外的工作真的是最小的,并且不会导致潜在的昂贵的基于成本的优化. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
