Dlaczego mój prosty wykonywania zapytańDlaczego skanowanie tylko indeksu trwa tak długo?
select count(this_.Id) as y0_ from Activity this_
trwa tak długo (ponad 10 minut to czas)?
Oto plan kwerend (wyjście z EXPLAIN ANALYSE):
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
i wersja PostgreSQL:
PostgreSQL 9.3.5 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.7.2-5) 4.7.2, 64-bit
Indeks jest tu, na polu ID:
ALTER TABLE public.activity
ADD CONSTRAINT activity_pkey
PRIMARY KEY (id);
Wykonałem ODKRĘCENIE (WERBOSE, ANALIZA) w tabeli Aktywności. Następnie wynik tego samego polecenia SELECT wygląda następująco: http://pastebin.com/KJqHTAGA Nawet teraz liczba wierszy, które zostały ponownie sprawdzone, jest ogromna. Ale rzeczywiście działa trzy razy szybciej. – y434y
Czy sądzisz, że dostępne są jakieś przyszłe ulepszenia? – y434y
Nie widzę go, jeśli potrzebujesz dokładnej liczby. Ale jeśli ocena jest wystarczająca dla ciebie, przeczytaj to: https://wiki.postgresql.org/wiki/Slow_Counting –