VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

Firebird 使用 like 搜尋的問題

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> SQL 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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 樓

發表發表於: 星期五 五月 07, 2004 8:55 am    文章主題: 引言回覆

有上 http://sourceforge.net/projects/firebird/ 去找看看是否有人問過嗎??
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
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 樓

發表發表於: 星期五 五月 07, 2004 6:07 pm    文章主題: 引言回覆

1.select * from "NEW_TABLE" where "MyField" like '%香港';
你有算過.這樣要幾筆資料嗎?這樣子的話.是要花時間.電腦會有如當機.
但不是真的當機.它是在處理傳送資料.所以字集不管是使用哪一種都一樣.

我建議你可以研究以下文章
[轉貼]SQL 效率的文章
http://vfp.sunyear.com.tw/viewtopic.php?t=613

我的建議是:
1.改進硬體:加RAM.換好點的P4 CPU.換HD 7400轉等等.
2.DataBase PAGE_SIZE可設 4096以上
3.改進SQL語法
SELECT * FROM Orders WHERE Cu_Name like '苗'
不要列出所有欄位,Where條件多一點.或者不要使用like
-->SELECT Cu_No,Cu_Name,Ord_No,Ord_Date,Ord_Qty WHERE
Cu_Name like '苗' AND Ord_Qty>100

2.中文討論站
VFP愛用者社區
http://sunyear.vfp.com.tw
Delphi K.Top
http://delphi.ktop.com.tw
龍豪軟件
http://www.3asoft.com/cn

_________________
#############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!

學會VFP使用者社區的搜尋,Code才會更有趣~
#############################
回頂端
檢視會員個人資料 發送私人訊息
Ruey



註冊時間: 2003-03-12
文章: 1698
來自: tunglo

第 6 樓

發表發表於: 星期五 五月 07, 2004 9:10 pm    文章主題: 引言回覆

還有一篇也是不錯的,
[原創]範例-關於 Remote View
http://fox.hanyu.com.tw/View.aspx?fbId=7&Id=5817

_________________
#############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!

學會VFP使用者社區的搜尋,Code才會更有趣~
#############################
回頂端
檢視會員個人資料 發送私人訊息
mactable



註冊時間: 2003-09-23
文章: 3


第 7 樓

發表發表於: 星期六 五月 08, 2004 8:04 am    文章主題: 引言回覆

謝謝你的詳細回答 Very Happy

因為我現只在實驗性質, 所以 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 來實驗, 但應付如此 "渺小" 的資料應該不是問題 Smile

不相信 firebird 對中文不濟, 再建另一個 database, 這次預設 charset 設為 NONE, table 中的 field 的 charset 同樣設為 NONE, 竟然可以如常輸入中文, 繁簡資料並存亦可以, 使用 like 作糢糊 search 也正常了...

啊~ 那麼 firebird 中 charset 的 unicode 是用作幹什麼了?

我對 firebird 一知半解 (說實點半也沒有, 我玩了只有數天), 我仍試驗若 charset 不設為 unicode, 有否反效果.

請有使用 firebird 而亦有處理中文的師兄賜教一下小弟吧, 小弟實作不太明白.

謝謝!






Ruey 寫到:
1.select * from "NEW_TABLE" where "MyField" like '%香港';
你有算過.這樣要幾筆資料嗎?這樣子的話.是要花時間.電腦會有如當機.
但不是真的當機.它是在處理傳送資料.所以字集不管是使用哪一種都一樣.

我建議你可以研究以下文章
[轉貼]SQL 效率的文章
http://vfp.sunyear.com.tw/viewtopic.php?t=613

我的建議是:
1.改進硬體:加RAM.換好點的P4 CPU.換HD 7400轉等等.
2.DataBase PAGE_SIZE可設 4096以上
3.改進SQL語法
SELECT * FROM Orders WHERE Cu_Name like '苗'
不要列出所有欄位,Where條件多一點.或者不要使用like
-->SELECT Cu_No,Cu_Name,Ord_No,Ord_Date,Ord_Qty WHERE
Cu_Name like '苗' AND Ord_Qty>100

2.中文討論站
VFP愛用者社區
http://sunyear.vfp.com.tw
Delphi K.Top
http://delphi.ktop.com.tw
龍豪軟件
http://www.3asoft.com/cn
回頂端
檢視會員個人資料 發送私人訊息
Ruey



註冊時間: 2003-03-12
文章: 1698
來自: tunglo

第 8 樓

發表發表於: 星期六 五月 08, 2004 1:48 pm    文章主題: 引言回覆

1.為何要設ㄋ!一般資料庫都有這情況.
VFP and PostgreSQL 的中文解決方案(轉貼)
http://vfp.sunyear.com.tw/viewtopic.php?t=629&highlight=POSTGRESQL
-->但Firebird很奇怪.不用特意去設他.這跟他強調不用維護有關吧...

2.Default Character Set GB_2312
如果設定下去,我們可以用COLLATE語句對這些字段指定其特定的排序工作,所以必須是正確字集.
-->我建議你.若是要存入多國語言.可以設定為UNICODE_FSS
(片段文章 摘自Tr@SOE --基於InterBase的數據庫開發)

3.Default Character Set設為None,對於Delphi或C++Build等使用IB資料庫是沒有任何問題的.但是在Java開發環境使用中文時,就必須設定GB_2312或其他適當的字集.(片段文章 摘自Tr@SOE --基於InterBase的數據庫開發)
-->所以我也一樣預設None.沒有任何問題.單獨測過簡體與繁體一樣OK.
但沒有用過繁簡共存的狀況.
環境:Win2003+VFP+ODBC

4.一些網站相關問題與解答
http://forums.devshed.com/archive/t-91945
http://www.ibprovider.com/eng/documentation/FreeVSCom.html
http://forums.devshed.com/archive/t-91945

_________________
#############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!

學會VFP使用者社區的搜尋,Code才會更有趣~
#############################
回頂端
檢視會員個人資料 發送私人訊息
asako



註冊時間: 2004-07-07
文章: 1


第 9 樓

發表發表於: 星期三 七月 07, 2004 5:55 pm    文章主題: 引言回覆

也許你可以建一個區域 table

L_id L
1 香港
2 台灣

這樣是比較麻煩,不過當資料多時搜尋就會比 用 like 語法快多了
因為 like 是不能用 index 的
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> SQL 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作