2017-11-25 297 views
1

想象一下,我有一個帶有帖子的表格,我想通過該帖子進行全文搜索。帖子可以使用不同的語言,帖子數量太大。所以,我可以添加文字列的語言,我們將有:數據庫設計,用於全文搜索的多語言(Postgresql)

Posts: 
post_id bigserial PK 
post text 
post_ts tsvector 
language text 

(另外我會添加GIN指數)

當我搜索英文查詢文本,我將添加「,其中語言='英文'':

從帖子中選擇帖子to_tsquery('english','一些查詢字符串')@@ post_ts和language ='english';

所以postgres進程將只能找到英文帖子和跳過其他的行。是否有額外時間跳過其他行?是否可以將列語言添加到主鍵有助於此?或者,它會得到更好的性能,使不同的表,針對不同的語言?(Posts_en,Posts_fr,Posts_it)

+0

很難說如果它值得分離到不同的表中,但是如果你的查詢將有'where語言='english'和'並且語言將被索引(並且使用索引將對optimyzes有利)應該使用索引 –

回答