|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
mactable
註冊時間: 2003-09-23 文章: 3
第 1 樓
|
發表於: 星期四 五月 06, 2004 7:54 pm 文章主題: Firebird 使用 like 搜尋的問題 |
|
|
我使用 firebird 建立的 database
table 中的 column 是 unicode 編碼的
但當我使用 like 來 糢糊搜尋中文字時,
firebird 服務器的 cpu 使用率急升至 90+%, 便掛了
若用英文 like 來 search, 又沒有問題,
請問那裡出問題了?
正使用 firebird 1.5 |
|
回頂端 |
|
|
elleryq
註冊時間: 2007-06-21 文章: 768
第 2 樓
|
|
回頂端 |
|
|
Ruey
註冊時間: 2003-03-12 文章: 1698 來自: tunglo
第 3 樓
|
發表於: 星期五 五月 07, 2004 3:15 pm 文章主題: |
|
|
很高興有人在討論這問題..^_^
最好完整的SQL.把它post上來好嗎?
我猜是你的where條件太鬆了!!
導致資料很多.至於有多少我不知.
所以Firebird一直將資料傳送至client.
這種情形在c/s架構最常見.... _________________ #############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!
學會VFP使用者社區的搜尋,Code才會更有趣~
############################# |
|
回頂端 |
|
|
mactable
註冊時間: 2003-09-23 文章: 3
第 4 樓
|
發表於: 星期五 五月 07, 2004 4:08 pm 文章主題: |
|
|
我剛接觸 firebird 不久, 希望嘗試使將用中的 access port 至 firebird
我現存在 access 中, 是繁簡中文並存的 (使用 unicode), 故此, 我在 firbird 又建立了一個 database, default 字集是 UNICODE_FSS, 建立了一個 table , 當中的一個 field 是 varchar, charset 也是 UNICODE_FSS.
使用以下 statement 來進行糢糊尋找, 希望將 MyField 中含有結尾有 '香港' 的全找出來:
select * from "NEW_TABLE" where "MyField" like '%香港';
在 windows 中的工作管理員由, 明顯地 fbserver.exe 的 process 急升, 好像進入了死循環, 沒有回應.
但若果我使用糢糊尋找的字眼改為英文, 又沒有什麼問題.
又, 若我不使用 like 來 search, 用全符合的 statement 例如:
select * from "NEW_TABLE" where "MyField" = 'XXX';
不管 XXX 是中文 or 英文, 也沒有問題.
請問, 若字集使用 unicode, 是應該還要注意什麼才可以用 like 來 search 中文字串?
這個非常簡單的例子, 我不知錯在那裡, 問題是否出在 UNICODE_FSS ???
請有經驗的師兄指點一二.
P.S. 請問那裡還有關於 firebird 的中文討論區, 這些問題在國外的不好找出解決方法.
Ruey 寫到: | 很高興有人在討論這問題..^_^
最好完整的SQL.把它post上來好嗎?
我猜是你的where條件太鬆了!!
導致資料很多.至於有多少我不知.
所以Firebird一直將資料傳送至client.
這種情形在c/s架構最常見.... |
|
|
回頂端 |
|
|
Ruey
註冊時間: 2003-03-12 文章: 1698 來自: tunglo
第 5 樓
|
|
回頂端 |
|
|
Ruey
註冊時間: 2003-03-12 文章: 1698 來自: tunglo
第 6 樓
|
|
回頂端 |
|
|
mactable
註冊時間: 2003-09-23 文章: 3
第 7 樓
|
發表於: 星期六 五月 08, 2004 8:04 am 文章主題: |
|
|
謝謝你的詳細回答
因為我現只在實驗性質, 所以 table 內的資料只是我胡亂加上幾筆 --- 表中含有 '香港' 的記錄只有 2 筆, 全表的資料亦不過是 20-30 筆, 但我一用 like 來 search 便入了死 loop. 因為數據根本不多, 所以 even 我現在使用 select * 也不應如此 ...
使用的機器是我開發用的桌面電腦,
cpu amd xp 1600+
ram 512MB
hd ibm 7200rpm
運行 繁體 winxp pro sp1 + vs.net 2003 + firebird 1.5 + firebird .NET data provider 1.6 來實驗, 但應付如此 "渺小" 的資料應該不是問題
不相信 firebird 對中文不濟, 再建另一個 database, 這次預設 charset 設為 NONE, table 中的 field 的 charset 同樣設為 NONE, 竟然可以如常輸入中文, 繁簡資料並存亦可以, 使用 like 作糢糊 search 也正常了...
啊~ 那麼 firebird 中 charset 的 unicode 是用作幹什麼了?
我對 firebird 一知半解 (說實點半也沒有, 我玩了只有數天), 我仍試驗若 charset 不設為 unicode, 有否反效果.
請有使用 firebird 而亦有處理中文的師兄賜教一下小弟吧, 小弟實作不太明白.
謝謝!
|
|
回頂端 |
|
|
Ruey
註冊時間: 2003-03-12 文章: 1698 來自: tunglo
第 8 樓
|
|
回頂端 |
|
|
asako
註冊時間: 2004-07-07 文章: 1
第 9 樓
|
發表於: 星期三 七月 07, 2004 5:55 pm 文章主題: |
|
|
也許你可以建一個區域 table
如
L_id L
1 香港
2 台灣
這樣是比較麻煩,不過當資料多時搜尋就會比 用 like 語法快多了
因為 like 是不能用 index 的 |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|