Automatically Indexing Millions of Databases in Microsoft Azure SQL Database - Das, Sudipto; Grbic, Miroslav; Ilic, Igor; Jovandic, Isidora; Jovanovic, Andrija; Narasayya, Vivek; Radulovic, Miodrag; Stikic, Maja; Xu, Gaoxiang; Chaudhuri, Surajit (ACM SIGMOD Conference, 2019)
An appropriate set of indexes can result in orders of magnitude better query performance. Index management is a challenging task even for expert human administrators. Fully automating this process is of significant value. We describe the challenges, architecture, design choices, implementation, and learnings from building an industrial-strength auto-indexing service for Microsoft Azure SQL Database, a relational database service. Our service has been generally available for more than two years, generating index recommendations for every database in Azure SQL Database, automatically implementing them for a large fraction, and significantly improving performance of hundreds of thousands of databases. We also share our experience from experimentation at scale with production databases which gives us confidence in our index recommendation quality for complex real applications.