Le 2012-08-06 à 01:39, Maxim Boguk a écrit : > I know that for condition like ((field1>value1) or (field1=value1 and > field2>value2)) I could built index on (field1, field2) and use indexable > condition like (field1, field2) > (value1, value2). > > However, I have very tricky query which requires an indexable condition like > (field1>value1) or (field1=value1 and field2<value2). > I guess that I could use index definition like ON(field1, field2 DESC) > however, I can not build query condition which would use that index > effectively. > > Is it possible and my mind just went black on simple task? > > PS: field2 is varchar type so I couldn't using the negative values trick > build index ON(field1, (-field2)) > and write something like WHERE (field1, -field2) > (value1, -value2). > > -- > Maxim Boguk > Senior Postgresql DBA > http://www.postgresql-consulting.ru/ >
Could you perhaps use bitmapped indexes? Such that you'd have two indexes, and the optimizer would AND the two indexes together? Hope that helps! François