直接查询超时,分步(加临时表)查询飞快!郁闷。。。 ( 积分: 100 )

  • 主题发起人 主题发起人 reedblue
  • 开始时间 开始时间
R

reedblue

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个语句:<br>SELECT&nbsp;A.*,&nbsp;B.accName,&nbsp;C.cdbCycleMoney<br>FROM&nbsp;arCeditBill&nbsp;A&nbsp;INNER&nbsp;JOIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vwAccount&nbsp;B&nbsp;ON&nbsp;A.accID&nbsp;=&nbsp;B.accID&nbsp;INNER&nbsp;JOIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arCeditBillCycleDetail&nbsp;C&nbsp;ON&nbsp;A.cdbID&nbsp;=&nbsp;C.cdbID&nbsp;AND&nbsp;C.arcID&nbsp;=&nbsp;6<br>WHERE&nbsp;(A.accID&nbsp;IN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SELECT&nbsp;X.cltID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;pdClientRelate&nbsp;X<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;X.slmID&nbsp;=&nbsp;3300))<br>执行起来很慢,有时还会超时(数据多了);<br><br>但是如果用如下分步,得到的结果一样,前后全部执行却是飞快:<br>SELECT&nbsp;A.*,&nbsp;B.accName,&nbsp;C.cdbCycleMoney<br>INTO&nbsp;##TmpDB<br>FROM&nbsp;arCeditBill&nbsp;A&nbsp;INNER&nbsp;JOIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vwAccount&nbsp;B&nbsp;ON&nbsp;A.accID&nbsp;=&nbsp;B.accID&nbsp;INNER&nbsp;JOIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arCeditBillCycleDetail&nbsp;C&nbsp;ON&nbsp;A.cdbID&nbsp;=&nbsp;C.cdbID&nbsp;AND&nbsp;C.arcID&nbsp;=&nbsp;6<br>GO<br>SELECT&nbsp;*&nbsp;FROM&nbsp;##TmpDB<br>WHERE&nbsp;(accID&nbsp;IN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SELECT&nbsp;X.cltID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;pdClientRelate&nbsp;X<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;X.slmID&nbsp;=&nbsp;3300))<br>GO<br>望高手指点分析一下
 
后退
顶部