相关疑难解决方法(0)

合并两列并添加到一个新列中

在PostgreSQL中,我想使用SQL语句组合两列并从中创建一个新列.

我正在考虑使用concat(...),但有更好的方法吗?
最好的方法是什么?

sql postgresql null concatenation

31
推荐指数
3
解决办法
9万
查看次数

使用pg_trgm在3亿个地址中搜索

我的PostgreSQL 9.3 DB中有3亿个地址,我想用pg_trgm模糊搜索行.最终目的是实现与谷歌地图搜索一样的搜索功能.

当我使用pg_trgm搜索这些地址时,获得结果需要大约30秒.有许多行符合0.3的默认相似性阈值条件,但我只需要大约5或10个结果.我创建了一个trigram GiST索引:

CREATE INDEX addresses_trgm_index ON addresses USING gist (address gist_trgm_ops);
Run Code Online (Sandbox Code Playgroud)

这是我的查询:

SELECT address, similarity(address, '981 maun st') AS sml 
FROM addresses 
WHERE address % '981 maun st' 
ORDER BY sml DESC 
LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

生产环境的测试表已被删除.我显示了EXPLAIN测试环境的输出.大约有700万行,它需要大约1.6秒来获得结果.拥有3亿,需要30多个.

ebdb=> explain analyse select address, similarity(address, '781 maun st') as sml from addresses where address % '781 maun st' order by sml desc limit 10;
                                    QUERY PLAN                                                                            
————————————————————————————————————————————————————————————————————————————————    
 Limit  (cost=7615.83..7615.86 rows=10 width=16) (actual time=1661.004..1661.010 rows=10 loops=1)
 ->  Sort  (cost=7615.83..7634.00 rows=7268 …
Run Code Online (Sandbox Code Playgroud)

postgresql pattern-matching nearest-neighbor bigdata pg-trgm

5
推荐指数
1
解决办法
1666
查看次数