X-Original-To: pgsql-docs-postgresql.org@localhost.postgresql.org Received: from localhost (av.hub.org [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id 80443D9A11 for ; Fri, 21 Oct 2005 11:40:24 -0300 (ADT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 58506-05 for ; Fri, 21 Oct 2005 14:40:18 +0000 (GMT) Received: from ra.sai.msu.su (ra.sai.msu.su [158.250.29.2]) by svr1.postgresql.org (Postfix) with ESMTP id ECAEBD7868 for ; Fri, 21 Oct 2005 11:40:13 -0300 (ADT) Received: from ra (ra [158.250.29.2]) by ra.sai.msu.su (8.13.4/8.13.4) with ESMTP id j9LEe4Xr026184; Fri, 21 Oct 2005 18:40:04 +0400 (MSD) Date: Fri, 21 Oct 2005 18:40:03 +0400 (MSD) From: Oleg Bartunov X-X-Sender: megera@ra.sai.msu.su To: Tom Lane Cc: Teodor Sigaev , Michael Fuhr , pgsql-docs@postgresql.org Subject: Re: Multicolumn index doc out of date? In-Reply-To: <15864.1129854901@sss.pgh.pa.us> Message-ID: References: <20050912142647.GA34685@winnie.fuhr.org> <23966.1126553464@sss.pgh.pa.us> <4326BBF5.4090900@sigaev.ru> <15864.1129854901@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.322 required=5 tests=[AWL=-0.052, DNS_FROM_RFC_ABUSE=0.374] X-Spam-Level: X-Archive-Number: 200510/59 X-Sequence-Number: 3304 btw, I think it's worth to add link to src/backend/access/gist/README file, which we updated recently. Oleg On Thu, 20 Oct 2005, Tom Lane wrote: > [ getting back to this documentation issue finally ] > > Teodor Sigaev writes: >> I disagree with last affirmation: inner pages of index contains fair union of >> keys and enough helpful to select. Mailware ( http://www.pgsql.ru/db/mw ) >> sucsessfully use combined GiST index (date, tsvector) for searching. > >> GiST's split algorithm is good for unique leading keys, not so bad for small >> number of non-unique values and bad for all equals leading key. But "bad" means >> that itsn't optimal as picksplit for other keys may be. If there is several keys >> which can be moved on left or right page without changing union of first key for >> each page then GiST try put its on page (left or right) with smallest penalty >> calculated by other keys. This algorithm is very similar to defining page to put >> tuple with normal processing (without page split). > >> With unique leading key GiST's split is fully similar to BTree - it looks only >> at leading key, but gistchoose isn't. Gistchoose (gistutil.c:622) chooses child >> with smallest penalty and it looks to other keys if several leading keys has the >> same penalty. In a GiST tree different keys may have the same penalty value with >> new key. > > OK, how about this text then? > > A multicolumn GiST index can only be used when there is a query condition > on its leading column. Conditions on additional columns restrict the > entries returned by the index, but the condition on the first column is the > most important one for determining how much of the index needs to be > scanned. A GiST index will be relatively ineffective if its first column > has only a few distinct values, even if there are many distinct values in > additional columns. > > regards, tom lane > > ---------------------------(end of broadcast)--------------------------- > TIP 9: In versions below 8.0, the planner will ignore your desire to > choose an index scan if your joining column's datatypes do not > match > Regards, Oleg _____________________________________________________________ Oleg Bartunov, sci.researcher, hostmaster of AstroNet, Sternberg Astronomical Institute, Moscow University (Russia) Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ phone: +007(095)939-16-83, +007(095)939-23-83