I'm still looking into it, but it seems the difference in the 2 plans is due to the fact that when using partitions,
theplanner adds the time it would take to index-scan the empty "root" table.
But that table will never contain any data...
Is there any chance to have the partitioning mechanism know that a table will always contain no data, because only
inheritingtable will contain data?
Having the planner line:
-> Index Scan using teststscell13_pkey on teststscell13 data1 (cost=0.0..3.9 rows=1 width=16) (actual
time=0.006..0.006rows=0 loops=285)
doesn't make any sense: that table will never have any data.
I'd like to have a way to tell that to Postgresql...
Something like:
CREATE TABLE tabroot
(...) WITH (NODATA)
So that it will stop scanning the empty table every single loop...
And every time you try to insert directly into tabroot you get an error...