2008/12/14 Dmitry Koterov <dmitry@xxxxxxxxxx>: > Hello. > > Suppose I have the following index: > > CREATE INDEX idx ON tbl USING btree (abc, def, id) > > and perform the query with index scan: > > SELECT md5(id) > FROM tbl > WHERE abc=1 AND def=2 > LIMIT 200 > > The question: if the table "tbl" scanned to fetch "id" and calculate > md5(id), or the value of "id" is brought directly from "idx" index with no > table data access at all? The second behaviour is logical: why should we > access the table if all the needed data is already in the index entry... In fact not all the required information is in the index. Postgresql uses Multi-version-concurrency-control, which means there may be multi versions of the same row. Postgresql must hit the heap (table) no get the visibility information. > > (Some time ago I have read something about this behaviour somewhere, but now > cannot find it in the PostgreSQL documentation. Possibly it were words about > another database, not Postges?) > > Maybe here? http://www.postgresql.org/docs/8.3/static/mvcc.html David -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general