日期:2014-05-17  浏览次数:20490 次

ADO查询两次变成很慢(假死状态)
 select a.*
 from LNoBarcodeStock a inner join V_YarnMaster b on a.ItemCode=b.yarnnumbercode_s 
 left join UDepositary c on a.WarehouseNo = c.DepositaryCode 
 inner join WarehouseType d on a.WhseNo = d.whseno
 inner join MstCompany e on a.CompanyNo=e.CompanyNo 
 left join suppliermaster j on In_Source =j.SupplierCode 
 left join suppliermaster k on In_Source2 = k.SupplierCode 
 left join YarnQFeedback_HD l on a.ItemCode=l.YarnSysNum and a.BatchN=l.BatchN 
 left join YarnStockHold m on a.ReceiveID=m.ReceiveID 
 where a.Quantity-a.Out_Qty >0  and d.WhseNoDesc like '%AABB%'

以上语句,在查询分析器中多次运行都很快,但在程序中,用ADO打开时,第一次正常速度,但第二次就很慢(假死),谁能分析原因?

ado用了Rst.CursorLocation = adUseClient

------解决方案--------------------
有没有抓过Profiler Trace?看看第一次语句到达数据库的时间以及实际运行的时间和返回给客户端的时间,看看哪个阶段花费时间最久再做优化。 
------解决方案--------------------
就是先选定event然后运行语句根据开始结束时间找瓶颈
------解决方案--------------------
如果第一次查询没问题,第二次有问题,看看是不是代码中打开后忘记关闭数据库?