Hi Guz,

Thank you for the prompt reply.


> No, the optimizer is not retrieving anything, it just assumes that there
> are 2400 rows because that is the number of rows that exists in the
> statictics for this table. The optimizer just tries to find the best plan
> and to optimize the query plan for execution taking into consideration all
> information that can be found for this table (it also looks in the
> statistics information about rows from this table).


So, whats it assuming here as rows(2400).  Could you explain this.

Regards
Raghavendra
On Sun, Mar 28, 2010 at 12:32 PM, Szymon Guz <mabew...@gmail.com> wrote:

> 2010/3/28 Tadipathri Raghu <traghu....@gmail.com>
>
>  Hi All,
>>
>> Example on optimizer
>> ===============
>> postgres=# create table test(id int);
>> CREATE TABLE
>> postgres=# insert into test VALUES (1);
>> INSERT 0 1
>> postgres=# select * from test;
>>  id
>> ----
>>   1
>> (1 row)
>> postgres=# explain select * from test;
>>                        QUERY PLAN
>> --------------------------------------------------------
>>  Seq Scan on test  (cost=0.00..34.00 *rows=2400* width=4)
>> (1 row)
>> In the above, example the optimizer is retreiving those many rows where
>> there is only one row in that table. If i analyze am geting one row.
>>
>
> No, the optimizer is not retrieving anything, it just assumes that there
> are 2400 rows because that is the number of rows that exists in the
> statictics for this table. The optimizer just tries to find the best plan
> and to optimize the query plan for execution taking into consideration all
> information that can be found for this table (it also looks in the
> statistics information about rows from this table).
>
>
>>
>> postgres=# ANALYZE test;
>> ANALYZE
>> postgres=# explain select * from test;
>>                      QUERY PLAN
>> ----------------------------------------------------
>>  Seq Scan on test  (cost=0.00..1.01 *rows=1* width=4)
>> (1 row)
>>
>> My question here is, what it retreiving as rows when there is no such. One
>> more thing, if i wont do analyze and run the explain plan for three or more
>> times, then catalogs getting updated automatically and resulting the correct
>> row as 1.
>>
>>
>
> Now ANALYZE changed the statistics for this table and now the planner knows
> that there is just one row. In the background there can work autovacuum so
> it changes rows automatically (the autovacuum work characteristic depends on
> the settings for the database).
>
>
>> Q2. Does explain , will update the catalogs automatically.
>>
>>
>
> No, explain doesn't update table's statistics.
>
>
> regards
> Szymon Guz
>

Reply via email to