Thread: the "SORT" late very much.

the "SORT" late very much.

From
"jose antonio leo"
Date:
Hi,
I don't understand because the sort late very much.
I have a table "vtdiaart" with the next fields:
date,int_art,cod_pto,tip_mov,qty and  2381514 records.
They are 4 index created.
    name            fields
1: vtdiaart_pkey: "date, int_art, cod_pto" .
2: vtdiaart_d_ia: "date, int_art".
3: vtdiaart_d_cp:    "date,cod_pto".
4: vtdiaart_d:    "date" .

The next sentences return the next explain analyze.

EXPLAIN ANALYZE
SELECT cod_pto,date,int_art,tip_mov,qty
FROM vtdiaart v
WHERE date>='2002/08/1' and date <='2002/11/30'
ORDER BY date asc,int_art;

NOTICE:  QUERY PLAN:
Sort  (cost=100252.07..100252.07 rows=116313 width=71) (actual
time=22958.25..2)
  ->  Seq Scan on vtdiaart v  (cost=0.00..80825.71 rows=116313 width=71)
(actua)
Total runtime: 23815.94 msec
EXPLAIN


EXPLAIN ANALYZE
SELECT cod_pto,date,int_art,tip_mov,qty
FROM vtdiaart v
WHERE date>='2002/08/1' and date <='2002/11/30' and cod_pto='1001401'
ORDER BY date asc,int_art;

NOTICE:  QUERY PLAN:
Sort  (cost=90212.32..90212.32 rows=34118 width=71) (actual
time=18056.57..1811)
  ->  Seq Scan on vtdiaart v  (cost=0.00..86779.49 rows=34118 width=71)
(actual)
Total runtime: 18283.06 msec
EXPLAIN

EXPLAIN ANALYZE
SELECT cod_pto,date,int_art,tip_mov,qty
FROM vtdiaart v
WHERE date>='2002/08/1' and date <='2002/11/30' and cod_pto='1001401'
and int_art='29324'
ORDER BY date asc,int_art;

EXPLAIN
NOTICE:  QUERY PLAN:
Sort  (cost=38.27..38.27 rows=9 width=71) (actual time=167.42..167.47
rows=95 l)
  ->  Index Scan using vtdiaart_pkey on vtdiaart v  (cost=0.00..38.13 rows=9
wi)
Total runtime: 167.62 msec
EXPLAIN

Only the last sentence use the index


Re: the "SORT" late very much.

From
Richard Huxton
Date:
On Tuesday 26 Nov 2002 12:38 pm, jose antonio leo wrote:
> Hi,
> I don't understand because the sort late very much.
> I have a table "vtdiaart" with the next fields:
> date,int_art,cod_pto,tip_mov,qty and  2381514 records.
> They are 4 index created.
>     name            fields
> 1: vtdiaart_pkey: "date, int_art, cod_pto" .
> 2: vtdiaart_d_ia: "date, int_art".
> 3: vtdiaart_d_cp:    "date,cod_pto".
> 4: vtdiaart_d:    "date" .

Not sure I'd call a column "date", but that's beside the point here.

> WHERE date>='2002/08/1' and date <='2002/11/30'
>   ->  Seq Scan on vtdiaart v  (cost=0.00..80825.71 rows=116313 width=71)

> WHERE date>='2002/08/1' and date <='2002/11/30' and cod_pto='1001401'
>   ->  Seq Scan on vtdiaart v  (cost=0.00..86779.49 rows=34118 width=71)

Here PG estimates 34118 and 116313 rows - that's a lot of index entries to
read followed by a lot of reads for the data. PG decides to just scan the
table.

> WHERE date>='2002/08/1' and date <='2002/11/30' and cod_pto='1001401'
>   ->  Index Scan using vtdiaart_pkey on vtdiaart v  (cost=0.00..38.13 rows=9

Here we're getting 9 rows - PG decides to use the index.

Make sure you've run VACUUM ANALYSE and if that doesn't help try
  SET ENABLE_SEQSCAN = 'off'
and see if that forces the index to be used.

--
  Richard Huxton

Re: the "SORT" late very much.

From
"jose antonio leo"
Date:
On Tuesday 26 Nov 2002 12:38 pm, jose antonio leo wrote:
> Hi,
> I don't understand because the sort late very much.
> I have a table "vtdiaart" with the next fields:
> date,int_art,cod_pto,tip_mov,qty and  2381514 records.
> They are 4 index created.
>     name            fields
> 1: vtdiaart_pkey: "date, int_art, cod_pto" .
> 2: vtdiaart_d_ia: "date, int_art".
> 3: vtdiaart_d_cp:    "date,cod_pto".
> 4: vtdiaart_d:    "date" .

Not sure I'd call a column "date", but that's beside the point here.

Right, the name of the column is "fecha", Date in spanish.

> WHERE date>='2002/08/1' and date <='2002/11/30'
>   ->  Seq Scan on vtdiaart v  (cost=0.00..80825.71 rows=116313 width=71)

> WHERE date>='2002/08/1' and date <='2002/11/30' and cod_pto='1001401'
>   ->  Seq Scan on vtdiaart v  (cost=0.00..86779.49 rows=34118 width=71)

Here PG estimates 34118 and 116313 rows - that's a lot of index entries to
read followed by a lot of reads for the data. PG decides to just scan the
table.

> WHERE date>='2002/08/1' and date <='2002/11/30' and cod_pto='1001401'
>   ->  Index Scan using vtdiaart_pkey on vtdiaart v  (cost=0.00..38.13
rows=9

Here we're getting 9 rows - PG decides to use the index.

Make sure you've run VACUUM ANALYSE and if that doesn't help try
  SET ENABLE_SEQSCAN = 'off'
and see if that forces the index to be used.


With SET ENABLE_SEQSCAN = 'off' the time is upper.
It is possible that this not have improvement?
After, I join other table for extract the description of the column int_art
and the run time will be to long.??