Hi,

I've been working on trying to partition a big table (I've never partitioned a 
table in any other database till now).
Everything went ok, except one query that didn't work afterwards.

I've put the partition description, indexes, etc ..., and the explain plan 
attached.

The query is extremely fast without partition (index scan backards on the 
primary key)

The query is : "select * from logs order by id desc limit 100;"
id is the primary key.

It is indexed on all partitions.

But the explain plan does full table scan on all partitions.

While I think I understand why it is doing this plan right now, is there 
something that could be done to optimize this case ? Or put a warning in the 
docs about this kind of behaviour. I guess normally someone would partition 
to get faster queries :)

Anyway, I thought I should mention this, as it has been quite a surprise.
CREATE TABLE logs_150 (CHECK ( id_machine = 150)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_163 (CHECK ( id_machine = 163)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_289 (CHECK ( id_machine = 289)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_319 (CHECK ( id_machine = 319)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_238 (CHECK ( id_machine = 238)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_148 (CHECK ( id_machine = 148)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_176 (CHECK ( id_machine = 176)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_164 (CHECK ( id_machine = 164)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_316 (CHECK ( id_machine = 316)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_313 (CHECK ( id_machine = 313)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_217 (CHECK ( id_machine = 217)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_167 (CHECK ( id_machine = 167)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_287 (CHECK ( id_machine = 287)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_279 (CHECK ( id_machine = 279)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_248 (CHECK ( id_machine = 248)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_280 (CHECK ( id_machine = 280)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_165 (CHECK ( id_machine = 165)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_330 (CHECK ( id_machine = 330)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_149 (CHECK ( id_machine = 149)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_157 (CHECK ( id_machine = 157)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_272 (CHECK ( id_machine = 272)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_311 (CHECK ( id_machine = 311)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_309 (CHECK ( id_machine = 309)) INHERITS (logs) TABLESPACE 
data_logs;
CREATE TABLE logs_318 (CHECK ( id_machine = 318)) INHERITS (logs) TABLESPACE 
data_logs;


CREATE UNIQUE INDEX logs_150_pkey ON logs_150 (id) TABLESPACE index_logs;CREATE 
INDEX date_150 ON logs_150 (date) TABLESPACE index_logs ;CREATE INDEX event_150 
ON logs_150 (evenement) TABLESPACE index_logs;


.....


logs=> explain select * from logs order by id desc limit 100;
                                         QUERY PLAN
---------------------------------------------------------------------------------------------
 Limit  (cost=16524647.29..16524647.54 rows=100 width=295)
   ->  Sort  (cost=16524647.29..16568367.11 rows=17487927 width=295)
         Sort Key: public.logs.id
         ->  Result  (cost=0.00..827622.27 rows=17487927 width=295)
               ->  Append  (cost=0.00..827622.27 rows=17487927 width=295)
                     ->  Seq Scan on logs  (cost=0.00..826232.78 rows=17451978 
width=165)
                     ->  Seq Scan on logs_150 logs  (cost=0.00..199.04 
rows=6104 width=144)
                     ->  Seq Scan on logs_163 logs  (cost=0.00..261.79 
rows=7079 width=169)
                     ->  Seq Scan on logs_289 logs  (cost=0.00..428.93 
rows=10693 width=200)
                     ->  Seq Scan on logs_319 logs  (cost=0.00..31.92 rows=992 
width=129)
                     ->  Seq Scan on logs_238 logs  (cost=0.00..28.01 rows=701 
width=199)
                     ->  Seq Scan on logs_148 logs  (cost=0.00..80.15 rows=2015 
width=195)
                     ->  Seq Scan on logs_176 logs  (cost=0.00..12.40 rows=240 
width=295)
                     ->  Seq Scan on logs_164 logs  (cost=0.00..12.40 rows=240 
width=295)
                     ->  Seq Scan on logs_316 logs  (cost=0.00..12.40 rows=240 
width=295)
                     ->  Seq Scan on logs_313 logs  (cost=0.00..12.40 rows=240 
width=295)
                     ->  Seq Scan on logs_217 logs  (cost=0.00..12.40 rows=240 
width=295)
                     ->  Seq Scan on logs_167 logs  (cost=0.00..57.36 rows=1536 
width=170)
                     ->  Seq Scan on logs_287 logs  (cost=0.00..12.40 rows=240 
width=295)
                     ->  Seq Scan on logs_279 logs  (cost=0.00..12.40 rows=240 
width=295)
                     ->  Seq Scan on logs_248 logs  (cost=0.00..12.40 rows=240 
width=295)
                     ->  Seq Scan on logs_280 logs  (cost=0.00..12.40 rows=240 
width=295)
                     ->  Seq Scan on logs_165 logs  (cost=0.00..34.09 rows=909 
width=168)
                     ->  Seq Scan on logs_330 logs  (cost=0.00..62.46 rows=1746 
width=160)
                     ->  Seq Scan on logs_149 logs  (cost=0.00..12.40 rows=240 
width=295)
                     ->  Seq Scan on logs_157 logs  (cost=0.00..12.40 rows=240 
width=295)
                     ->  Seq Scan on logs_272 logs  (cost=0.00..32.14 rows=814 
width=183)
                     ->  Seq Scan on logs_311 logs  (cost=0.00..12.40 rows=240 
width=295)
                     ->  Seq Scan on logs_309 logs  (cost=0.00..12.40 rows=240 
width=295)
                     ->  Seq Scan on logs_318 logs  (cost=0.00..12.40 rows=240 
width=295)

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to [EMAIL PROTECTED] so that your
       message can get through to the mailing list cleanly

Reply via email to