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

資料庫查詢方法的一種設想?

尚未結案
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-01 19:06:34 IP:61.150.xxx.xxx 未訂閱
各位先進好! 我有一個想法:在資料庫查詢時,查找內容輸入在Edit1‧text,查詢時首先從最常用的表中取出所有的fields放到一個 array 中,將 locate 的 keyfidels 設為這個array, 然後看是否在這個table 中查找到。 Locate(array1,edit1.text,false); 如果沒找到,則從資料庫中取出所有的tables,然後每個表依前面的方法一一查找。 程式中可以設定:如果一個查找內容在某一個表中找到,則這個表的 ReferenceValue 加1(可以寫在 windows 的 registry ),每次查找從ReferenceValue最大的一個開始。 這樣做主要是想簡化查找設計,否則"查找姓名","查找學號","查找時間"等等一大堆,感覺有些麻煩。 這種想法對不對,或者有好的方法請各位先進指引,謝謝! (DB: Access ,資料庫中records最多的一個表有 10 萬多records) 發表人 - mathewzhao 於 2003/07/01 19:13:19
silence
一般會員


發表:9
回覆:17
積分:10
註冊:2003-06-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-01 20:04:26 IP:61.221.xxx.xxx 未訂閱
用 LOCATE 不見得比較快 因為你要先 OPEN TABLE/QUERY 10萬筆資料可能會 OPEN 到 TIMEOUT 建議用全文檢索的資料庫 (我也還沒用過全文檢索, 所以沒有做法可以提供) 不過 我的資料量一天就至少20萬筆了, 一個月7百多萬 (10 fields=200bytes) 查詢起來也不見得慢 (那是已經從 QUERY 濾掉大部分的條件了) 所以 不要用 locate, 用 SQL 想想辦法
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-02 00:04:27 IP:61.62.xxx.xxx 未訂閱
hi, mathewzhao, 你的想法是不錯, 但是這樣的資料表設計是不是就是有問題的呢, 這點你要先想清楚, 怎麼會要查的資料不在你要查找的資料表中時, 還要去其他的資料表查呢, 這樣的結構是不正確的!! locate 的問題點, silence兄已很明白的告訴你, 速度是有問題的, 因為 locate 是 dataset 的功能, 是先下載資料到 client 再來查找, 不如在下 sql command 時就將查找的資料明確地給資料庫處理, 若是速度慢的話, 再由 index 下手, 針對 where 條件式中的欄位加上索引來加速查找的速度!! 發表人 - timhuang 於 2003/07/02 00:09:41
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-02 00:31:46 IP:61.70.xxx.xxx 未訂閱
1.一個TABLE有十萬筆,而你的資料庫竟然是用ACCESS,嘿嘿~~我只能說你真的不怕死 2.LOCATE的原理是把全部的資料筆數LOAD到記憶體中,當你記憶體不夠時,會逼的程式幫你做虛擬記憶體,這樣反而更慢 3.依你的資料結構看來,本人覺得用 SQL 會更快 以上 -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-02 20:40:30 IP:219.145.xxx.xxx 未訂閱
感謝3位前輩的回應與指點,謝謝!  我想我的問題是出在下面兩個方面:  1。不清楚locate的運行原理  2。資料表設計結構不正確    我的想法是希望不用設定查找類型,像Google一樣,可以不用設查找範圍  (例如:資訊,電影,音樂等)直接在資料庫查詢,既然這樣不行,不知有  沒有其它的方法可以做到,謝謝!  
引言: 嘿嘿~~我只能說你真的不怕死
我對Access不熟,不知前輩Jasonwong能否說得清楚些,謝謝!
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-02 23:57:42 IP:61.70.xxx.xxx 未訂閱
引言: 我的想法是希望不用設定查找類型,像Google一樣,可以不用設查找範圍 (例如:資訊,電影,音樂等)直接在資料庫查詢,既然這樣不行,不知有 沒有其它的方法可以做到,謝謝!
這個也是跟你的資料結構有關~~不然你的SQL要怎麼下~~ 所以如果你要做到以上的效果~~你必須從你的結構去下手~~
引言:我對Access不熟,不知前輩Jasonwong能否說得清楚些,謝謝!
因為 ACCESS 是屬於 DESKTOP 型的資料庫~ DESKTOP型的都有一個很嚴重的缺點~~就是索引檔很容易就掛掉了~~只要索引檔掛掉~~你的資料庫就形同廢掉了~~所以你在網路可以找到修復ACCESS索引檔的程式~~ 所以看你的資料量而言(十萬筆)~~如果不設索引~~你這樣搜尋資料會很慢~~設了又怕掛掉~~所以我是建議不要用ACCESS~~而去改用其他的~~像 InterBase 我就覺得不錯~~又是免費的~~ -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
系統時間:2024-04-24 4:13:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!