加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server – 这个NO JOIN PREDICATE告诫我应该感想鉴戒吗?

发布时间:2021-05-25 14:49:09 所属栏目:编程 来源:网络整理
导读:我正在对一本机能不佳的存储进程的各个部门举办妨碍解除.该措施的这一部门是抛出NO JOIN PREDICATE告诫 select method = case methoddescription when 'blah' then 'Ethylene Oxide' when NULL then 'N/A' else methoddescription end,testmethod = case meth

我正在对一本机能不佳的存储进程的各个部门举办妨碍解除.该措施的这一部门是抛出NO JOIN PREDICATE告诫

select
    method = 
        case methoddescription 
            when 'blah' then 'Ethylene Oxide'
            when NULL then 'N/A'
            else methoddescription
        end,testmethod = 
        case methoddescription 
            when 'blah' then 'Biological Indicators'
            when NULL then 'N/A'
            else 'Dosimeter Reports'
        end,result = 
        case when l.res is null or l.res <> 1 then 'Failed'
        else 'Passed'
        end,datecomplete = COALESCE(CONVERT(varchar(10),NULL,101),'N/A')
from db2.dbo.view ls
    join db1.dbo.table l
        on ls.id = l.id
    where item = '19003'
        and l.id = '732820'

视图([ls])挪用长途处事器(打算右侧的长途查询A).

这是该打算的图像:

由于this blog post我只问这个题目并且我想确保往后再也不会再咬我了.

办理要领

由于我们知道l.id =’732820’和ls.id = l.id然后SQL Server派生出ls.id =’732820′

FROM   db2.dbo.VIEW ls
       JOIN db1.dbo.table l
         ON ls.id = l.id
WHERE  l.id = '732820'

是沟通的

( /*...*/ FROM   db2.dbo.VIEW ls WHERE id = '732820'  )
   CROSS JOIN 
  ( /*...*/  FROM   db1.dbo.table l WHERE id = '732820'  )

这次重写是not bad for performance.

This derivation is a good thing. It allows SQL Server to filter out rows … earlier than would otherwise be possible.

(编辑:湖南网)

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

    热点阅读