以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请问sql查询显示查询超时,怎么解决?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137353)

--  作者:hbhb
--  发布时间:2019/7/4 9:17:00
--  请问sql查询显示查询超时,怎么解决?
大师:较复杂的sql查询语句,执行后显示查询超时,如何优化,或怎么解决? 比如下面的语句
S————E_LECT pzFL.FVoucherID,pzM.FDate as date,pzM.FPeriod as month,pzM.FGroupID,pzM.FNumber,pzM.FPosted as 记账标志,pzFL.FEntryID,pzFL.FExplanation as zy,pzFL.FAccountID,(case when  pzfl.fdc = 1 then pzfl.famount end) as jej, (case  when pzfl.fdc <> 1 then pzfl.famount end) as jed, pzFL.FCurrencyID,pzFL.FExchangeRate,pzFL.FDC,pzFL.FAmountFor,pzFL.FAmount,pzFL.FQuantity,pzFL.FMeasureUnitID,pzFL.FUnitPrice,pzFL.FDetailID,pzfz.FName + \'-\' + Format(pzm.FNumber,\'\') as pzlbname,km.FNumber as kmid,km.FName as kmname,Item8.FName as xm,Item8.FNumber as xmdl,Item9.FName as xm2,Item9.FNumber as xmdl2,Item10.FName as xm3,Item10.FNumber as xmdl3,Item11.FName as xm4 FROM t_Voucher As pzM INNER JOIN t_VoucherEntry As pzFL ON pzM.FVoucherID = pzFL.FVoucherID left join t_VoucherGroup pzfz on pzM.FGroupID = pzfz.FGroupID left join t_Account km on km.FAccountID = pzfl.FAccountID left JOIN t_ItemDetailV tailV  ON pzfl.FDetailID = tailv.FDetailID left JOIN t_Item item8 ON item8.FItemID = tailv.fitemid And (tailv.fitemclassid = 1 Or  tailv.fitemclassid = 8) left JOIN t_Item item9 ON item9.FItemID = tailv.fitemid And (tailv.fitemclassid = 2) left JOIN t_Item item10 ON item10.FItemID = tailv.fitemid And (tailv.fitemclassid = 3) left JOIN t_Item item11 ON item11.FItemID = tailv.fitemid And (tailv.fitemclassid > 3 And  tailv.fitemclassid <> 8) where pzM.FYear = 2014 And pzM.FPeriod<= 12 ORDER BY pzM.FPeriod,pzm.FNumber,pzM.FVoucherID,pzFL.FEntryID

--  作者:有点蓝
--  发布时间:2019/7/4 9:52:00
--  
1、添加必要的索引
2、尽量不要在sql里使用函数
3、使用SQLCommand,增加超时时间