Sql 使用ts_向量列进行文本搜索
很难找到关于这个Sql 使用ts_向量列进行文本搜索,sql,postgresql,indexing,tsvector,Sql,Postgresql,Indexing,Tsvector,很难找到关于这个ts_vector的信息,但是为了加快地址搜索,地址列上的简单索引并不能给出令人满意的结果 为了避免这个限制,我尝试将ts\u向量用于以下查询: alter table mytable add tsv ts_vector; update mytable set tsv = to_tsvector(address); 我非常不熟悉这个ts\u vector列,但是如果我创建了一个btree索引(或任何其他索引),而不是查询address列来查询ts\u vector列,它会加快
ts_vector
的信息,但是为了加快地址搜索,地址列上的简单索引并不能给出令人满意的结果
为了避免这个限制,我尝试将ts\u向量
用于以下查询:
alter table mytable add tsv ts_vector;
update mytable set tsv = to_tsvector(address);
我非常不熟悉这个
ts\u vector
列,但是如果我创建了一个btree索引(或任何其他索引),而不是查询address列来查询ts\u vector
列,它会加快速度吗?是的,但它必须是一个GIN索引:
CREATE INDEX ON mytable USING gin (tsv);
您不需要添加额外的列,还可以执行以下操作:
CREATE INDEX ON mytable USING gin (to_tsvector('english', address));
这样的索引可以与
@
操作符一起使用。如果创建了额外的列,不是会更快吗?不,这只会浪费一些空间。哦,等等!我刚刚尝试了一下,得到了这个SQL错误[42P17]:错误:索引表达式中的函数必须标记为ImmutableCorry。我已经更改了答案,使函数不可变。如果您在同一个表中搜索多个列,该怎么办?每个表需要一个索引还是所有表都需要一个索引?