TDataSetProvider.GetRecord() 读取数据速度慢 |
尚未結案
|
paulln
一般會員 發表:1 回覆:0 積分:0 註冊:2007-09-13 發送簡訊給我 |
aData: OleVariant;
ADODataSet.CommandText:="select t.*,gs.Id As 公司ID,gs.公司名称,zm.Id As 账目ID,zm.账目名称,jh.Id As 计划id,jh.计划名称,gc.工程编号,gc.工程名称 ,sgd.名称 as 施工队名称,yh.姓名 as 登记人,yhsh.姓名 As 审核人员,hzplan.汇总表id,zt.名称 As 状态名称,decode(t.施工队性质,'0','内部施工队','1','外部施工队') as 内外施工队 from 材料计划申请表 t,工程表 gc,施工队 sgd,Dic_状态 zt,计划表 jh,账目表 zm,公司表 gs,系统_用户表 yh,系统_用户表 yhsh,已汇总材料计划 hzplan where t.工程id=gc.Id And t.审批状态=zt.代码( ) And zt.对象='材料计划申请' and gc.计划id=jh.id and jh.账目id=zm.id and zm.公司id=gs.id and t.id=hzplan.申请表id( ) and t.施工队ID=sgd.id and t.登记人id=yh.Id And t.审核人员id=yhsh.id( ) and ((审批状态='9' or 审批状态='7'))" //语名1 aData:=TDataSetProvider.GetRecords(-1,aRecsOut,ord(GrReset)); //需时30秒 其中TDataSetProvider的dataset是一个ADODataSet,ADODataSet查出600多条记录,在PL/SQL里面直接运行该ADODataSe的SQL耗时1秒钟。但是中间件运行“语名1”耗时30秒,客户端反应变得非常慢,请问怎么提高速度??谢 |
VICSYS
初階會員 發表:21 回覆:64 積分:32 註冊:2002-10-10 發送簡訊給我 |
|
mustapha.wang
資深會員 發表:89 回覆:409 積分:274 註冊:2002-03-13 發送簡訊給我 |
|
VICSYS
初階會員 發表:21 回覆:64 積分:32 註冊:2002-10-10 發送簡訊給我 |
在三層的情況下, 我大多使用 DBX! 也測試過 ADO 的連線! 速度應該沒有這麼離譜!
如果用 SQL Plus 全部讀完 600 筆, 只要一秒! 那麼排除 Oralce 在讀取資料時, 花了太多時間! ADODataSe的SQL耗時1秒鐘? 我還是不知道這是指什麼! 所以, 以下只好亂猜! 反正現在很閒 :) 這是問題2: 將 QUERY 改用 VIEW 來完成! 主要測試 ADO 是否自行做一些解譯的動作! 不知道您有沒有空回答上述的問題呢? 我想! 您應該只是這個 Query 很慢. 其他都很快! 所以排除 1. ADO CONNECT 時間過慢 2. CursorLocation 有做調整, 或者是用 clUseClient 3. CursorType 有做調整 或用 ctOpenForwardOnly 如果其他的 Query 都很慢, 那麼上述都成了問題.... 我想, 最好的方式是, 您自行用中斷點, 一步一步追縱! function TCustomProvider.GetRecords(Count: Integer; out RecsOut: Integer; Options: Integer; const CommandText: WideString; var Params, OwnerData: OleVariant): OleVariant; begin Result := DoGetRecords(Count, RecsOut, Options, CommandText, Params, OwnerData); <- BreakPoint end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |