Another option here is to use a partial index. You can index on some other column -- perhaps the column you want the results ordered by where the where clause is true.
Something like: create index t_idx on t (name) where c>0 and d>0; then any select with a matching where clause can use the index: select * from t where c>0 and d>0 order by name Could scan the index and not even have to sort on name. -- greg ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster