• A good overview of views.  One area I would caution on the use of horizonal partitioning - if your views encompasses a lot of tables (60+ in our case) and you are joining to another similar view, the optimizer can give some non-optimal plans.  I believe this is because the optimizer can only evaluate a certain number of tables in the time it has to determine the best plan.  To get around this we have some smaller views that only look at 12 tables at a time (one table per month) and write queries based on that.  This has helped some queries that never finished before being killed to become queries that would run in less than a minute.