Re: create index on a field of udt
| От | Charles Clavadetscher |
|---|---|
| Тема | Re: create index on a field of udt |
| Дата | |
| Msg-id | 005901d0b23e$f6becbc0$e43c6340$@swisspug.org обсуждение |
| Ответ на | Re: create index on a field of udt (Jeff Janes <jeff.janes@gmail.com>) |
| Список | pgsql-general |
+1
create index on test (((i).id));
ANALYZE
explain select * from test where (i).id = 8909;
QUERY PLAN
-------------------------------------------------------------------------
Index Scan using test_id_idx on test (cost=0.43..8.45 rows=1 width=34)
Index Cond: ((i).id = 8909)
(2 rows)
From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Jeff Janes
Sent: Montag, 29. Juni 2015 08:42
To: Shujie Shang
Cc: John R Pierce; PostgreSQL mailing lists
Subject: Re: [GENERAL] create index on a field of udt
On Sun, Jun 28, 2015 at 10:31 PM, Shujie Shang <sshang@pivotal.io> wrote:
Oh, I didn't explain my question well, actually I want to create an index on an udt in a table.
e.g.
create type info as (id int, name text);
creat table test (i info);
I want to run:
create index myindex on test (i.id)
It is a matter of finding the correct level of magic parentheses.
create index on test (((i).id));
The outer layer are always needed for creating indexes. The middle layer are needed because you are indexing an expression, not a column. And the inner layer is needed because, well, that is just how udt works.
Cheers,
Jeff
В списке pgsql-general по дате отправления: