I have one question about the visibility of explain plan.
Firstly , I was inserting into data to a table. I use : [ insert into ptest select * from test02; ]
And test02 table has 10,000,000 records. And ptest is a parent table, which has two distribution child table --- ctest01 and ctest02.
When I execute the above sql statement, it takes some time to execute because of data volume.
Before the above sql statement finish, I open another session with psql, and execute: [ select count(*) from ptest; ]
Because the insert into statement in other session has not finished, I got the result of zero.
Before first session finish, If I check the explain of select, I got:
postgres=# explain select count(*) from ptest;
QUERY PLAN
-----------------------------------------------------------------------------------
Aggregate (cost=55406.40..55406.41 rows=1 width=0)
-> Append (cost=0.00..49601.92 rows=2321793 width=0)
-> Seq Scan on ptest (cost=0.00..0.00 rows=1 width=0)
-> Seq Scan on ctest01 ptest (cost=0.00..24776.52 rows=1159752 width=0)
-> Seq Scan on ctest02 ptest (cost=0.00..24825.40 rows=1162040 width=0)
(5 rows)postgres=#
I think that is because postgresql is holding commited and uncommited data together physically(vacuum is needed because of it?).
Is there some method that allow simple select such as select count(*) do not activate the explain plan ?
(I think the more table is bigger, the more sample data is needed)