請問在 ADOQuery 上使用 SQL 語法 |
答題得分者是:lu
|
clowread
一般會員 ![]() ![]() 發表:1 回覆:1 積分:0 註冊:2004-03-14 發送簡訊給我 |
我知道有兩種寫法
<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 發送簡訊給我 |
應該這樣說,如果一口氣打開整個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> 請問兩者差在哪裡 ? 效能都一樣嘛 ? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |