View Index and UNION

From: Stefan Keller <sfkeller(at)gmail(dot)com>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: View Index and UNION
Date: 2013-05-26 00:35:11
Message-ID: CAFcOn29Ui7VU8tVrO-bQx3oXTq6FsykR+gHF5PvS=WD2d=875g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi

I've encountered a fundamental problem which - to me - can only be
solved with an (future/possible) real index on views in PostgreSQL
(like the exist already in MS SQL Server and Ora):

Given following schema:

1. TABLE a and TABLE b, each with INDEX on attribute geom.

2. A VIEW with union:

CREATE VIEW myview AS
SELECT * FROM a
UNION
SELECT * FROM b;

3. And a simple query with KNN index and a coordinate "mypos" :

SELECT * FROM myview
ORDER BY ST_Geomfromtext(mypos) <-> myview.geom

Now, the problem is, that for the "order by" it is not enough that
each on the two tables calculate the ordering separately: We want a
total ordering over all involved tables!

In fact, the planner realizes that and chooses a seq scan over all
tuples of table a and b - which is slow and suboptimal!

To me, that's a use case where we would wish to have a distinct index on views.

Any opinions on this?

Yours, Stefan

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message William King 2013-05-26 01:27:18 Re: View Index and UNION
Previous Message Jim Nasby 2013-05-25 22:50:48 Re: Using indexes for partial index builds