Forum OpenACS Q&A: Response to How does postgresql handle indexes on multiple columns?

PG and Oracle will only use the leading half of the index (e.g. minion_id) in that case.  Under the hood, I believe that the spell_ids are too scattered around to be useful as an index in their own right.  If you change your unique index to (spell_id, minion_id), then you should be able to get rid of your (spell_id) index.