You can add a where clause to an index, and the index will only contain the values defined in that where clause. If you have a column that is 90% null values, you can index just the ones that have values:
Code:
create index ind_test on tablename (sparsecolumn) where sparsecolumn is not null
I have not tried this out myself, so I do not know how extravagant the where clause can get.