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.