首页 > 解决方案 > 同一逻辑语句上的执行计划更改

问题描述

当我更改订单或条件时,我会得到 2 个不同的执行计划?

第一个查询立即运行,第二个查询不同并堆叠几分钟。

我不明白为什么。

好的执行计划



    select findamittakul.recid,count(*) ct,max(c1.key5) key5 
    from 
    findamittakul join contact1 c1 on(tz=key1)  
                  join CONTACT2 c2 on(c1.accountno=c2.accountno )
    where
    c2.hp=findamittakul.hp
    and (c1.CREATEON =findamittakul.CREATEON or c1.CREATEON>findamittakul.createon )
    and c2.HAFKADABLOCK='' 
    and source=1 and c1.kupatype =3
    group by findamittakul.recid

糟糕的执行计划



    select findamittakul.recid,count(*) ct,max(c1.key5) key5 
    from 
    findamittakul join contact1 c1 on(tz=key1)  
                  join CONTACT2 c2 on(c1.accountno=c2.accountno )
    where
    c2.hp=findamittakul.hp
    and (c1.CREATEON >findamittakul.CREATEON or c1.CREATEON=findamittakul.createon )
    --andc1.CREATEON >=findamittakul.CREATEON  --same plane
    and c2.HAFKADABLOCK ='' 
    and source=1 and c1.kupatype =3
    group by findamittakul.recid 

标签: sql-serversql-execution-plan

解决方案


推荐阅读