Warum meine einfache AbfrageWarum Index Only Scan dauert so lange?
select count(this_.Id) as y0_ from Activity this_
nehmen so lange dauert die Ausführung (mehr als 10 Minuten dieses Mal)? Hier
ist die Abfrage-Plan (Ausgabe des EXPLAIN ANALYZE):
QUERY PLAN
Aggregate (cost=854047.36..854047.37 rows=1 width=4)
> (actual time=728525.277..728525.277 rows=1 loops=1)
-> Index Only
> Scan using activity_pkey on activity this_ (cost=0.56..805401.87
> rows=19458196 width=4) (actual time=36.961..725381.557 rows=19517989
> loops=1)
> Heap Fetches: 10351403
Total runtime: 728533.529 ms
Und PostgreSql Version:
PostgreSQL 9.3.5 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.7.2-5) 4.7.2, 64-bit
Der Index ist auch hier auf dem Feld Id:
ALTER TABLE public.activity
ADD CONSTRAINT activity_pkey
PRIMARY KEY (id);
Ich habe die VACUUM (VERBOSE, ANALYSE) in der Aktivitätstabelle getan. Danach sieht die Ausgabe des gleichen SELECT-Befehls wie folgt aus: http://pastebin.com/KJqHTAGA Auch jetzt ist die Anzahl der Zeilen, die erneut überprüft wurden, sehr groß. Aber tatsächlich wird es dreimal schneller ausgeführt. – y434y
Glauben Sie, dass es zukünftige Verbesserungen gibt? – y434y
Ich kann keins sehen, wenn Sie eine genaue Anzahl benötigen. Aber wenn eine Schätzung für Sie ausreichend ist, lesen Sie dies: https://wiki.postgresql.org/wiki/Slow_Counting –