On 15 September 2015 at 18:16, Teodor Sigaev <teo...@sigaev.ru> wrote:

> CREATE INDEX ... ON table (f1, f2, f3) UNIQUE(f1, f2) INCLUDE(f4);
>>
>
> I don't see an advantage this form. What is f3 column? just order? and f4
> will not be used for compare?  At least now it requires additional checks
> that UNIQUE() fields are the same as first columns in definition. Non
> ordering field f4 will  require invasive intervention in planner because
> now it believes that all columns in btree are ordered.
>
>
I'm also a bit confused where f3 comes in here. If it's UNIQUE on (f1,f2)
and we include f4. Where's f3?


> I agree, that form
> CREATE UNIQUE INDEX i ON t (f1, f2, f3) INCLUDE (f4)
> is clear. f4 will be used in row compare and actually planner will be able
> to use it as unique index (f1, f2, f3) with additional f4 or as
> as unique index (f1, f2, f3, f4), because uniqueness on (f1, f2, f3) gives
> warranty of uniqueness on (f1, f2, f3, f4)
>
>
I'd vote for this too. However, INCLUDE does not seem to be a reserved word
at the moment.

I think this syntax fits in nicely to with non-unique indexes too.

Regards

David Rowley

--
 David Rowley                   http://www.2ndQuadrant.com/
<http://www.2ndquadrant.com/>
 PostgreSQL Development, 24x7 Support, Training & Services

Reply via email to