相關閱讀《PostgreSQL 字符集下區域設置對性能的影響改進辦法》
http://my.oschina.net/quanzl/blog/135721 數據庫
按照這個思路,將中文排序信息內置於數據庫內核之中,若是 locale 選擇中文,由此檢索排序位置,而不是經過系統API strcoll()。 性能
encoding均爲utf-8,數據量爲54996,中文與ascii換雜,同一硬件平臺,openSUSE。
如下爲以 pgAdminIII 爲客戶端建立索引的測試結果: spa
locale=C,原生PG:查詢成功但無結果,耗時: 140 毫秒(ms)。
locale=zh_CN.utf8,原生PG:查詢成功但無結果,耗時: 985 毫秒(ms)。
locale=zh_CN.utf8,修改後:查詢成功但無結果,耗時: 203 毫秒(ms)。 操作系統
以上結果都是記錄「建立、刪除、再建立」過程的第二次建立時間。 .net
同時發現一個問題,Linux下平臺的中文排序比較怪:
select * from (values('阿'),('啊'),('醃'),('包'),('')) as a(e) order by e;
返回結果
""
"醃"
"阿"
"啊"
"包"
猜想這裏的「醃」,取「a za」發音。不是 yan 音。 blog
無論怎樣,後邊嘗試跟社區溝通一下,看他們能不能接受。之前就PG在不一樣系統下排序混亂的話題討論,有位大仙說這樣(使用操做系統排序)挺好。 排序