jmodic is absolutely right about the index usage. A Unique Index is treated exactly the same whether you made it directly or indirectly through a UK and will be utilitized the same as any other index on the table - based on the usage of a left-leading subset of columns.

As for the other questions, you will be best served by an outside utility. There are utilities out there that can collect all your SQL from your code (VB or whatever) and from your packages, procs and functions and generate EXPLAIN PLANS for all of them. This would tell you whether or not your indexes are being used.

Unfortunately, there isn't anything to tell you (easily) which of the 2 approaches you mentioned are better across all your SQL.

I am currently writing one and will (hopefully) be releasing it with a book I am writing, but until then you're on your own. You will have to gather up the SQL that uses those columns in those tables and see, as a whole, which strategy is better. Run them all with the single index and then with the separate indexes and see which is better.

There is no easy answer on this one (that I know of)

Sorry,

- Chris