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

query 的Filter與sql有什麼不同

答題得分者是:P.D.
chi120
一般會員


發表:16
回覆:16
積分:6
註冊:2007-08-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-07-30 14:29:45 IP:61.221.xxx.xxx 訂閱
想請問各位大大
query1.Filtered := False;
query1.Filter := '條件';
query1.Filtered := True;

query1.close;
query1.sql.clear;
query1.sql.add('條件');
query1.open;


這兩組query的寫法,有什麼不同???
過濾條件下一樣,是否就有相同的作用?
謝謝
------
Aki..就算沒有明天
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-07-30 23:49:58 IP:219.68.xxx.xxx 未訂閱
1.結果一様
2.sql方式是直接把filter交由後端的sql資料庫(如interbase, m$sql, mysql...)引擎進行語法的轉譯, 然後分析傳送結果回來
filter 是由 TQuery所封包的物件來進行以上程序, 基本上TQuery一般是透過BDE來操作, 兩者有什麼很大的差別, 個人並沒有很深入的去了解
不過我自己的經驗, 使用 sql 的方式效能比filter 來的好
但 sql 與 filter 最大的差別是在於
使用 sql 前, Query必須是Close, 而 Filter的用法是Query要先開啟, 才下 filter, 這對於大容量的記錄來說就有很大的不同
因為 sql 是先決定條件再open, 所以傳回的筆數可大可小, 但 Query先open, 無異於是先將大量記錄先load回前端, 再由buffer 進行 filter 的功能
尤其 filter 的欄位如果沒有索引的協助, 那可是惡夢一場

以上純屬個人經驗談, 僅提供參考
===================引 用 chi120 文 章===================
想請問各位大大
query1.Filtered := False;
query1.Filter := '條件';
query1.Filtered := True;

query1.close;
query1.sql.clear;
query1.sql.add('條件');
query1.open;


這兩組query的寫法,有什麼不同???
過濾條件下一樣,是否就有相同的作用?
謝謝
系統時間:2024-04-25 13:36:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!