none
优化2 RRS feed

  • 问题

  • 看看这个语句的优化? 能不能用 NOT EXISTS 替代 not in LifeMir.dbo.CMSUSREL A (CRCO— 主健) LifeMir.dbo.NBSPCNTR (PCCO — 主健) 两张表关联 PCUSR6 like 'C__9%' and (PCAPPY*10000+PCAPPM*100+PCAPPD)=CONVERT(varchar(12) , getdate(), 112)); 可不可以用试图替换: 大家帮优化一下 -------------------------------------------------------------------------- select Distinct CRCTL1 as PolicyID from LifeMir.dbo.CMSUSREL A left join LifeMir.dbo.NBSPCNTR B On A.CRCTL1=B.PCPOLN where (CRALPH ='OW1' or (CRALPH='INS' and CRCTL2=0)) AND CRCTL1 NOT IN  select PCPOLN from LifeMir.dbo.NBSPCNTR where PCUSR6 like 'C__9%' and (PCAPPY*10000+PCAPPM*100+PCAPPD)=CONVERT(varchar(12) , getdate(), 112));
    2011年4月14日 6:16

答案

  • 1. IN 和 exists当然是可以替换的

    例子:

    select * from dbo.CounterData where counterid IN
    (
    select counterid from dbo.CounterDetails where objectname='Memory'
    )

    select * from dbo.CounterData where EXISTS
    (
    select counterid from dbo.CounterDetails where CounterData.counterid=CounterDetails.counterid and objectname='Memory'
    )

    2. 单句SQL的优化建议

    a. sql写法

    b. table的index调整

    可以通过在查询分析器中打开执行计划,来分析目前sql的cost主要耗用在什么地方, 然后针对性的调优, 调优后,再查看执行计划,进行比较,循环往复。

    规则:

    a. 执行计划中最好走index

    b. 走index的部分,尽量调整为走index seek。

    • 已标记为答案 Ai-hua Qiu 2011年4月22日 7:08
    2011年4月14日 7:58

全部回复

  • 1. IN 和 exists当然是可以替换的

    例子:

    select * from dbo.CounterData where counterid IN
    (
    select counterid from dbo.CounterDetails where objectname='Memory'
    )

    select * from dbo.CounterData where EXISTS
    (
    select counterid from dbo.CounterDetails where CounterData.counterid=CounterDetails.counterid and objectname='Memory'
    )

    2. 单句SQL的优化建议

    a. sql写法

    b. table的index调整

    可以通过在查询分析器中打开执行计划,来分析目前sql的cost主要耗用在什么地方, 然后针对性的调优, 调优后,再查看执行计划,进行比较,循环往复。

    规则:

    a. 执行计划中最好走index

    b. 走index的部分,尽量调整为走index seek。

    • 已标记为答案 Ai-hua Qiu 2011年4月22日 7:08
    2011年4月14日 7:58
  • in 和 Exists 内部机制是不一样,不同情况需要不同应用。。对性能来说
    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com
    2011年4月15日 2:05