Sam*_*ron 6 postgresql performance full-text-search
我正在postgres中实现全文搜索.
我想搜索我系统中的所有帖子.帖子全文索引是帖子标题和帖子正文的合并.
我有两种实现方法:
考虑到我有时需要通过表中的其他属性(例如deleted_at is null,等等)过滤搜索,会有什么效果更好.
将tsvector列保留在与数据相同的表中(副作用select*now sucks)或单独的表(副作用,需要加入,索引过滤是否复杂)是一种更好的方法吗?
在我的实验中,tsvector列的典型大小约为1%此tsvector使用时计算的文本字段大小to_tsvector().
考虑到这一点,将tsvector列存储在另一个表中应该可以提供性能优势.例如,即使您不使用SELECT *(并且您不应该使用),原始单个表中的任何seqscan仍然必须加载包含原始文本的页面.如果将tsvector字段卸载到单独的表中,页面加载速度将提高100倍.
换句话说,我赞成卸载tsvector字段的第二个解决方案来分离表.或者,或者将帖子(原始文本)更深入地卸载到表层次结构中(但我想这几乎是一样的).
请注意,要使全文搜索起作用,原始文本不是必需的.您希望甚至不将其存储在数据库中,或者以高度压缩的格式存储它(并且不一定可以通过SQL例程轻松访问).只要某些内容可以根据原始文本创建tsvector,或者在更改时更新,它就会起作用.
| 归档时间: |
|
| 查看次数: |
721 次 |
| 最近记录: |