On 07/13/2010 06:48 AM, Elias Ghanem wrote:
Hi,
I have table "ARTICLE" containing a String a field "STATUS" that represents a 
number in binary format (for ex: 10011101).
My application issues queries with where conditions that uses BITAND operator on 
this field (for ex: select * from article where status & 4 = 4).
Thus i'm facing performance problemes with these select queries: the queries 
are too slow.
Since i'm using the BITAND operator in my conditions, creating an index on the 
status filed is useless
and since the second operator variable (status & 4 = 4; status & 8 = 8; status 
& 16 = 16...) a functional index is also usless (because a functional index require the 
use of a function that accept only table column as input parameter: constants are not 
accepted).
So is there a way to enhance the performance of these queries?
Thanks,
Elias


How many flags are there?  If its not too many you could make a separate column 
for each... but then that would be lots of indexes too...

One other thought I had was to make it a text column, turn the flags into words 
(space separated) and use full text indexes.

I played around with int's and string's but I couldnt find a way using the & 
operator.

-Andy

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

Reply via email to