全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1434
推到 Plurk!
推到 Facebook!

為何IBdataset之locate與Adodataset或BDE之Ttable之locate效率差很多?

答題得分者是:kadee
ry_lee
高階會員


發表:368
回覆:251
積分:123
註冊:2002-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-03-11 13:07:45 IP:125.224.xxx.xxx 未訂閱
為何IBdataset之locate與Adodataset或BDE之Ttable之locate效率差很多?IBdataset在primary key欄位locate與Adodataset或BDE之Ttable之locate效率差很多,後來我在IBdataset與Adodataset與BDE之Ttable之afterscroll事件加一行程式碼memo1.lines.add('afterscroll'),執行程式後我發現僅IBdataset之afterscroll事件程序一直被呼叫,而Adodataset或BDE之Ttable之locate完全無呼叫afterscroll事件程序,如果IBdataset資料表有10000筆,而要找之記錄資料是在很後面,那被呼叫之afterscroll事件程序就接近10000次,這是否表示IBdataset之locate其實是逐筆比對而不能像Adodataset或BDE之Ttable之locate(它們會以最佳效率之方式來搜尋)?有沒有什麼辦法能讓IBdataset之locate也能像Adodataset或BDE之Ttable之locate那麼快速有效率?

ps:IBdataset在open之後,有去呼叫fetchall方法後才去執行locate
kadee
高階會員


發表:11
回覆:141
積分:165
註冊:2002-03-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-03-12 11:09:20 IP:59.127.xxx.xxx 訂閱
一般來講,在client端,除非確定 目前的 dataset 筆數不多,才適合使用 locate 或 filter的方式
找出需要的紀錄,如果 dataset 的筆數已經高達 10000筆,實在不適合用
locate的方式,建議利用db中適當的index找出需要的紀錄值,才是比較合適的設計方式。

Kadee Aon /www.bigredinf.net
===================引 用 ry_lee 文 章===================
為何IBdataset之locate與Adodataset或BDE之Ttable之locate效率差很多?IBdataset在primary key欄位locate與Adodataset或BDE之Ttable之locate效率差很多,後來我在IBdataset與Adodataset與BDE之Ttable之afterscroll事件加一行程式碼memo1.lines.add('afterscroll'),執行程式後我發現僅IBdataset之afterscroll事件程序一直被呼叫,而Adodataset或BDE之Ttable之locate完全無呼叫afterscroll事件程序,如果IBdataset資料表有10000筆,而要找之記錄資料是在很後面,那被呼叫之afterscroll事件程序就接近10000次,這是否表示IBdataset之locate其實是逐筆比對而不能像Adodataset或BDE之Ttable之locate(它們會以最佳效率之方式來搜尋)?有沒有什麼辦法能讓IBdataset之locate也能像Adodataset或BDE之Ttable之locate那麼快速有效率?

ps:IBdataset在open之後,有去呼叫fetchall方法後才去執行locate
------
Kadee/BigRed Ent.
www.tw165.com
系統時間:2024-05-07 16:14:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!