Re: Serious performance problem - Mailing list pgsql-hackers

From Alex Pilosov
Subject Re: Serious performance problem
Date
Msg-id Pine.BSO.4.10.10110301012530.2632-100000@spider.pilosoft.com
Whole thread Raw
In response to Re: Serious performance problem  (Antonio Fiol Bonnín <fiol@w3ping.com>)
Responses Re: Serious performance problem
Re: Serious performance problem
List pgsql-hackers
On Tue, 30 Oct 2001, Antonio Fiol [iso-8859-1] Bonn�n wrote:

> > | > Seems that problem is very simple :))
> > | > MSSql can do queries from indexes, without using actual table at all.
> > | > Postgresql doesn't.
> > | >
> > | > So mssql avoids sequental scanning of big table, and simply does scan of
> > | > index which is already in needed order and has very much less size.
<snip>
> > | The consequence for my problem is now:  If it is technically possible
> > | to implement index scans without table lookups please implement it.  If
The feature you are looking for is called 'index coverage'. Unfortunately,
it is not easy to implement with Postgresql, and it is one of few
outstanding 'nasties'. The reason you can't do it is follows: Postgres
uses MVCC, and stores 'when' the tuple is alive inside the tuple. So, even
if index contains all the information you need, you still need to access
main table to check if the tuple is valid. 

Possible workaround: store tuple validity in index, that way, a lot more
space is wasted (16 more bytes/tuple/index), and you will need to update
all indices when the base table is updated, even if indexed information
have not changed.

Fundamentally, this may be necessary anyway, to make index handlers aware
of transactions and tuple validity (currently, if you have unique index,
you may have conflicts when different transactions attempt to insert
conflicting data, _at the time of insert, not at time of commit_).

-alex



pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Odd error in complex query (7.2): Sub-SELECT uses un-GROUPed...
Next
From: Vince Vielhaber
Date:
Subject: Re: pgsql-committers?