The Index as a First-Class Construct in Relational Database Systems
D. Stott Parker, Edwin Mach · 2005
In relational database systems the index is generally a second-class construct: users cannot explicitly use an index. (In fact, the keyword INDEX is not even defined in the SQL2 (SQL92) standard.) The principle that ‘indexes should be used but not seen’ has been followed for decades, and is often justified as necessary in order to avoid the complexities introduced by explicit access paths and navigational queries. We review arguments for and against this principle, and for making the index a first-class construct in relational database systems. For large and complex databases, such as those arising in bioinformatics, the second-class status of indexing can be in conflict with its importance. The case for a first-class index appears strongest for situations like these. We investigate ways to incorporate first-class indexing into the relational database model, surfacing indexes as functionals. This investigation gives insights about the relational model, and also suggests ways for relational databases to support applications like bioinformatics, for which indexing is of central importance.