Let consider the student database and its clustering index and primary (only one will be applicable at a time). Now consider the state when the database is to be searched or accessed in the alphabetical order of names. Any search on a student name would need sequential data file search, therefore, is going to be very time consuming. Such a search on an average would need reading of half of the total number of blocks.
Therefore, we require secondary indices in database systems. A secondary index is files that have records having a secondary index field value which is not the ordering field of the data file, and a pointer to the block that have the data record. Please note that even if a data file can have only single primary index (as there can be only single ordering of a database file), it can have many secondary indices.
Secondary index can be described on an alternate key or non-key attributes. A secondary index that is described on the alternate key will be dense as secondary index on non-key attributes would need a bucket of pointers for one index entry. Let us define them in more detail with the help of Figures.