Re: [GENERAL] How to create index on only some of the rows

2011-02-14 Thread Jasen Betts
On 2011-02-07, A B gentosa...@gmail.com wrote:
 Hello.

 How do you create an index for only some of the rows in a table? I
 read in the docs:

  The expression used in the WHERE clause can refer only to columns of
 the underlying table, but it can use all columns, not just the ones
 being indexed. Presently, subqueries and aggregate expressions are
 also forbidden in WHERE. The same restrictions apply to index fields
 that are expressions. 

 So until this changes, can you just add a boolean field to tell if the
 column should be used in the index, and then run  create index 
 where use_in_index = true  or are there other (better?) ways of doing
 this?

the manual section quoted above is not exactly correct,
you are also allowed constants, immutable functions and operators.

 create index foo_bigbar on foo(bar) where quux  8.6;
 create index foo_bar_nofred on foo(bar) where fred is null;

etc...

 



-- 
⚂⚃ 100% natural

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[GENERAL] How to create index on only some of the rows

2011-02-07 Thread A B
Hello.

How do you create an index for only some of the rows in a table? I
read in the docs:

 The expression used in the WHERE clause can refer only to columns of
the underlying table, but it can use all columns, not just the ones
being indexed. Presently, subqueries and aggregate expressions are
also forbidden in WHERE. The same restrictions apply to index fields
that are expressions. 

So until this changes, can you just add a boolean field to tell if the
column should be used in the index, and then run  create index 
where use_in_index = true  or are there other (better?) ways of doing
this?

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] How to create index on only some of the rows

2011-02-07 Thread Vibhor Kumar

On Feb 7, 2011, at 11:00 PM, A B wrote:
 So until this changes, can you just add a boolean field to tell if the
 column should be used in the index, and then run  create index 
 where use_in_index = true  or are there other (better?) ways of doing
 this?


If you want you can do that Or You can use proper where clause as given below:
CREATE INDEX indexname on tablename(columname) where condition;

example:
create index directed_graph_idx on directed_graph(node_from) where node_from in 
('A','B');

Thanks  Regards,
Vibhor Kumar
vibhor.ku...@enterprisedb.com
Blog:http://vibhork.blogspot.com


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] How to create index on only some of the rows

2011-02-07 Thread Andrew Sullivan
On Mon, Feb 07, 2011 at 03:00:54PM +0100, A B wrote:
 So until this changes, can you just add a boolean field to tell if the
 column should be used in the index, and then run  create index 
 where use_in_index = true  or are there other (better?) ways of doing
 this?

What are the criteria for inclusion in the index?  Those would be the
criteria you put in your WHERE clause.

A

-- 
Andrew Sullivan
a...@crankycanuck.ca

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general