Я создал индекс для текстового столбца, но поиск с использованием фильтров (содержит) по-прежнему занимает около 15 секунд, а (равно) занимает около 4 секунд.
Поиск в окне поиска администратора фляги аналогиченмедленно.
Так, как бы можно было оптимизировать этот поиск?Кстати, я говорю 9 миллионов строк.Простой поиск в чистом 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)