Re: explain and index scan

From: "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
To: <psql(at)elbrief(dot)de>, <pgsql-general(at)postgresql(dot)org>
Subject: Re: explain and index scan
Date: 2012-02-27 12:30:20
Message-ID: D960CB61B694CF459DCFB4B0128514C2078D7FEC@exadv11.host.magwien.gv.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Andreas wrote:
> PostgreSQL 9.1.2 on i686-pc-linux-gnu, compiled by gcc-4.4.real
(Debian 4.4.5-8) 4.4.5, 32-bit
>
> id | integer | not null Vorgabewert nextval('a_id_seq'::regclass)
> a | integer | not null
> b | integer | not null
> Indexe:
> "a_pkey" PRIMARY KEY, btree (id)
> "a_a_key" UNIQUE CONSTRAINT, btree (a, b)
>
> explain select id from a where a = 1 and b = -90875 ;
> QUERY PLAN
>
------------------------------------------------------------------------
-------------------------
> Index Scan using a_a_key on a (cost=0.00..2.37 rows=1 width=4)
> Index Cond: ((a = 1) AND (b = (-90875)))
>
> explain select id from a where b = -90875 ;
> QUERY PLAN
>
------------------------------------------------------------------------
---------------------------
> Index Scan using a_a_key on a (cost=0.00..961.76 rows=1 width=4)
> Index Cond: (b = (-90875))
>
> Both select where shown as 'Index Scan'. But the second select is not
a real index scan,
> its more a seq scan on an index, i think. I think, it would be a good
idea to show this in the
> explain. Now you can see this only if you look at the cost.

A full scan of the index is also an index scan.

I think that it might be justified to make a difference here if
PostgreSQL
scanned full indexes routinely. But this is not the case: index scans
are
normally only considered if they are estimated to hit only a small
percentage of the rows.

I think that your example is pathological, and the only way I could
reproduce it is by setting enable_seqscan=off.

How were the enable_* parameters set when you ran your example?
What is the output of
SELECT * FROM pg_stats WHERE tablename='a';

Yours,
Laurenz Albe

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message chinnaobi 2012-02-27 13:34:12 PSQL 9.1 Streaming Replication Windows 2008 64 bit Servers
Previous Message Chris Travers 2012-02-27 12:19:10 Re: Four issues why "old elephants" lack performance: Explanation sought Four issues why "old elephants" lack performance: Explanation sought