Re: [postgresql-it] Problema performance query

  • From: "Riccardo (SCASI)" <r.penco@xxxxxxxxxxxx>
  • To: postgresql-it@xxxxxxxxxxxxx
  • Date: Wed, 16 Apr 2008 14:03:11 +0200

Chris Mair ha scritto:

certo, eccole

interessante...

quel giorno aggiunto suggerisce di usare un query plan
*del tutto* diverso: salta all'occhio il sort di mezzo:

Sort  (...rows=3015...) (actual ...rows=304670...)

ovvero, il planner s'aspetta di avere 3k rows li` e invece
trova 300k.

Prova ad allargare il campionamento statistico delle colonne id_rilev, datain. Devi fare un po` di prove:

alter table dettagliorilevamenti alter id_rilev set statistics 100;
alter table rilevamenti alter datain set statistics 100;
analyze dettagliorilevamenti;
analyze rilevamenti;

Ora come va?

centrato!!!

con statistics a 100, mettendo molti giorni in più (1 mese):

Aggregate (cost=336982.50..336982.51 rows=1 width=0) (actual time=50842.178..50842.178 rows=1 loops=1)
-> Nested Loop (cost=0.00..334666.62 rows=926351 width=0) (actual time=0.048..49998.286 rows=963886 loops=1)
-> Index Scan using idx_data on rilevamenti r (cost=0.00..4592.44 rows=9115 width=8) (actual time=0.024..474.263 rows=8221 loops=1)
Index Cond: ((datain >= '2007-11-01 00:00:00'::timestamp without time zone) AND (datain <= '2007-12-01 00:00:00'::timestamp without time zone))
-> Index Scan using idx_rilev on dettagliorilevamenti dr (cost=0.00..28.02 rows=655 width=4) (actual time=2.267..5.825 rows=117 loops=8221)
              Index Cond: ("outer".id = dr.id_rilev)
Total runtime: 50842.284 ms

(al secondo run impiega 4103 ms)

una domanda, come hai scelto i campi per cui aumentare il campionamento statistico?

[...]

Bye,
Chris.

ciao e grazie 1k
riki


Other related posts: