為什么同樣的查詢在PL/SQL Developer中要比Delphi的BDE快? |
尚未結案
|
dust.zhu
一般會員 發表:3 回覆:8 積分:2 註冊:2009-06-30 發送簡訊給我 |
Oracle資料庫,查詢結果大約有10萬筆記錄,來源多個table;
在PL/SQL Developer中毫秒級就出來結果(雖然只有幾十筆記錄,不是全部,全部取出來好像要30分鐘左右) 在delphi中用BDE,程序直接就死在那了!等了幾分鐘也不見有任何結果,即使用rownum來限制,好像也沒效果 請問各位大大,在Delphi中如何做到pl/sql developer的類似效果?先取出一部分結果顯示,再取后續的所有記錄? 萬分感謝! 編輯記錄
dust.zhu 重新編輯於 2010-05-17 14:06:32, 註解 無‧
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
這是你對BDE不夠了解
而且你也沒提到你是用BDE的哪個元件與怎麼設定 建議看 Delphi 4.x 實戰篇2 一書, 有深入說明 TTable 與 TQuery 的運作特性 可以在網路下載到 http://www.sinter.com.tw/codegear/codegear_technique.html 不過 BDE 也是有先天性的缺點 如果不是必需要用的話 建議改用 ADO 或更新的 DBX 技術
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
Andy Wu
一般會員 發表:17 回覆:25 積分:18 註冊:2004-02-25 發送簡訊給我 |
如果非得用 BDE,可以增加使用 TClientDataSet + TDataSetProvider 物件
設定 ClientDataSet.PacketRecord 屬性 Description Use PacketRecords to specify how many records should be contained in a single packet fetched from a provider, or to indicate that the packet returned should contain only metadata 簡單說,一個 Packet 要抓多少 Row 的資料回來 當指標移動到這個 Packet 的最後一筆時,請再下 ClientDataSet.GetNextPacket 抓下一包 Packet 回來 |
smallfox
高階會員 發表:2 回覆:113 積分:128 註冊:2003-02-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |