加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 数据库 > MsSql > 正文

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;

查询计划:

有一个开销,但查询的不必要部分很早就消除了(在这种情况下解析期间;在更复杂的情况下的简化阶段),因此额外的工作真的是最小的,并且不会导致潜在的昂贵的基于成本的优化.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读