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

請問在 ADOQuery 上使用 SQL 語法

答題得分者是:lu
clowread
一般會員


發表:1
回覆:1
積分:0
註冊:2004-03-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-10 00:57:57 IP:125.232.xxx.xxx 訂閱
我知道有兩種寫法 

<textarea cols="60" rows="15" class="cpp" name="code"> ADOQuery1->SQL->Text = "SELECT * FROM data WHERE Moves = " IntToStr(num); ADOQuery1->Open(); 和 ADOQuery1->Filter = "Moves = " IntToStr(num); ADOQuery1->Filtered = true; </textarea>

請問兩者差在哪裡 ? 效能都一樣嘛 ?
編輯記錄
clowread 重新編輯於 2007-05-10 01:01:25, 註解 無‧
lu
高階會員


發表:11
回覆:189
積分:195
註冊:2003-11-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-11 11:25:12 IP:203.73.xxx.xxx 訂閱
應該這樣說,如果一口氣打開整個TABLE,然後再用Filter 的方式去找資料,這樣會比用SELECT還慢,如果那個TABLE的RECORD越多差距越明顯
一般來說,寫資料庫的程式大多不會如此使用,因為這樣寫初期都OK,一旦日子久了,RECORD變多,程式就會異常緩慢
或許你會說FILTER不是沒有存在的必要了嗎?當然~~凡事都有例外,在特殊的場合下,還是可以用,例如:你一個QUERY下去,是挑選少數幾筆RECORD,然後就可以用FILTER來挑選資料,這時候一來比較不用考慮效能(因為筆數少差距有限,搞不好SELECT會更慢),二來程式也比較好寫

順便一提,FILTER的運作方式,是採用循序尋找低....而用SELECT,資料庫會自動判斷是否採用INDEX,如果你要搜尋的欄位有設INDEX,那差距會更大


===================引 用 clowread 文 章===================
我知道有兩種寫法

<textarea class="cpp" rows="15" cols="60" name="code">ADOQuery1->SQL->Text = "SELECT * FROM data WHERE Moves = " IntToStr(num); ADOQuery1->Open(); 和 ADOQuery1->Filter = "Moves = " IntToStr(num); ADOQuery1->Filtered = true; </textarea>

請問兩者差在哪裡 ? 效能都一樣嘛 ?
系統時間:2024-04-20 21:06:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!