Ich versuche, eine Suche von etwa 10 Millionen Zeilen gegen primary_entity_name
zu starten. Jedes Mal, wenn fq
über ein Leerzeichen verfügt, überschreitet die Abfrage jedoch das Zeitlimit.PostgreSQL Multi-Word-Zeichenfolge Vergleich Zeitüberschreitungen
// "dog" works
// "walking dog" times out
select *
from companies
where primary_entity_name LIKE '%walking dog%'
limit 10
erklären (Analyse auf, Puffer auf)
Limit (cost=0.00..21551.17 rows=10 width=1542) (actual time=52210.872..269801.658 rows=6 loops=1)
Buffers: shared hit=1429 read=2115468
-> Seq Scan on companies (cost=0.00..2247787.26 rows=1043 width=1542) (actual time=52210.871..269801.644 rows=6 loops=1)
Filter: ((primary_entity_name)::text ~~ '%walking dog%'::text)
Rows Removed by Filter: 10471215
Buffers: shared hit=1429 read=2115468
Planning time: 0.113 ms
Execution time: 269801.687 ms
Abfrage-Plan
Limit (cost=0.00..41950.28 rows=10 width=1569)
-> Seq Scan on companies (cost=0.00..1959078.25 rows=467 width=1569)
Filter: ((primary_entity_name)::text ~~ '%walking dog%'::text)
Sie sollten die tatsächlichen Abfragen nehmen, führen Sie sie mit EXPLAIN (ANALYSE, BUFFERS) und veröffentlichen Sie die beiden Pläne. –
Danke - Bitte siehe oben @LaurenzAlbe – Will