Re: PATCH: index-only scans with partial indexes
От | Tomas Vondra |
---|---|
Тема | Re: PATCH: index-only scans with partial indexes |
Дата | |
Msg-id | 560AC2CD.2080802@2ndquadrant.com обсуждение исходный текст |
Ответ на | Re: PATCH: index-only scans with partial indexes (Tomas Vondra <tomas.vondra@2ndquadrant.com>) |
Ответы |
Re: PATCH: index-only scans with partial indexes
|
Список | pgsql-hackers |
On 09/29/2015 04:57 PM, Tomas Vondra wrote: > Hello, > > On 09/29/2015 12:27 PM, Kyotaro HORIGUCHI wrote: ... >> >> cost_index() seems to need to be fixed. It would count excluded >> clauses in estimate. > > Hmm, good point. The problem is that extract_nonindex_conditions uses > baserel->baserestrictinfo again, i.e. it does not skip the implied > clauses. So we may either stick the filtered clauses somewhere (for > example in the IndexPath), teach extract_nonindex_conditions to use > predicate_implied_by. I'd say the first option is better. Agreed? And the attached patch v4 should do the trick - it adds 'indexrinfos' to IndexPath and uses it in cost_index(). CREATE TABLE t AS SELECT i AS a, i AS b, i AS c FROM generate_series(1,1000) s(i); CREATE INDEX idx ON t(a) WHERE b > 1000; Then SELECT a FROM t WHERE b > 1000 AND a < 1000; /* size(qpquals) = 0 */ SELECT a FROM t WHERE b > 1000 AND c < 1000; /* size(qpquals) = 1 */ SELECT a FROM t WHERE c > 1000 AND c < 1000; /* size(qpquals) = 2 */ and so on. Which seems correct I believe. regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Вложения
В списке pgsql-hackers по дате отправления: