對于中文使用者,在PostgreSQL中應該将編碼無條件的設為UTF8,為簡化和統一區域(loacle)也推薦盡量設定為C,但Collate和Ctype對性能或功能有一定影響,需要注意。
rhel 6.3 x64虛機(4C/8G/300G HDD)
PostgreSQL 9.6.2
Collate會影響中文的排序,在zh_CN的區域下中文按拼音排序,其它區域按字元編碼排序。
Ctype會影響pg_trgm和部分正則比對的結果,比如Ctype為'C'時,pg_trgm将無法支援中文
對性能要求不高的場景建議将Collate和Ctype都設定為zh_CN.UTF8,其它區域設定為C。
對性能要求較高的場景建議将Ctype設定為zh_CN.UTF8,其它區域設定為C。如果有部分查詢需要按拼音排序,可在列定義和SQL表達式中指定Collate為zh_CN。
<a href="http://blog.chinaunix.net/uid-20726500-id-4766163.html" target="_blank">PostgreSQL中的區域和編碼</a>