• It is worth mentioning that, since this article was first published, SQL Azure has received a lot of Microsoft's attention. We've started using it ourselves. Notice that Microsoft has implemented an Index Advisor for Azure SQL databases, which does EXACTLY THE SAME THING that my process does -- it looks at query performance history, recommends indexes to be created and dropped, and optionally implements the changes for you. So my idea couldn't have been all that bad if Microsoft did it too and is aggressively marketing it as a good feature to use. I personally suspect they got the idea from me. :satisfied:

    On the flip side, it is ALSO worth mentioning that, both in SQL Server and in SQL Azure, I have seen index recommendations show up in the missing index views even when the indexes already exist, and I have seen the index usage statistics show that those indexes are not being used even though the server thinks they are needed. In those cases, Microsoft's Index Advisor will recommend or create duplicate indexes; my process used to, as well, until I added code to check to see if an index exists before creating another one. I've brought this to Microsoft's attention, and they say they are currently investigating why the necessary indexes aren't being used. In the mean time, you are all correct to be skeptical about SQL Server's "missing index" recommendations. Treat them as recommendations, don't blindly implement all of them but look at them thoughtfully first, and you will find that those missing index views are good enough to save you some time and effort troubleshooting query performance. They are not perfect, but they are worth looking at.