我在文本列上创建了一个索引,但是使用过滤器(包含)进行搜索仍然需要15秒,而(等于)需要大约4秒。
在烧瓶管理搜索框中进行的搜索同样很慢。
那么优化此搜索的方法是什么?顺便说一句:我说的是900万个字符串。仅在纯python中搜索(在内存中)会更快很多。
以下是分析:
... text = 'project'
Aggregate (cost=546598.03..546598.04 rows=1 width=0) (actual time=1742.969..1742.969 rows=1 loops=1)
-> Seq Scan on twitter (cost=0.00..546597.64 rows=156 width=0) (actual time=1742.966..1742.966 rows=0 loops=1)
Filter: ((text)::text = 'project'::text)
Rows Removed by Filter: 9129062
Planning time: 0.159 ms
Execution time: 1743.000 ms
(6 rows)
... text ilike '%project%'
Aggregate (cost=547376.38..547376.39 rows=1 width=0) (actual time=18154.062..18154.062 rows=1 loops=1)
-> Seq Scan on twitter (cost=0.00..546635.55 rows=296332 width=0) (actual time=0.177..18101.235 rows=498397 loops=1)
Filter: ((text)::text ~~* '%project%'::text)
Rows Removed by Filter: 8631301
Planning time: 1.142 ms
Execution time: 18154.104 ms
(6 rows)