The number of rows in the index table (as defined by the NAXIS2 keyword) will ordinarily be equal to the product of all the IAXISn keyword values. In the case of multi-dimensional indices, the index along the 1st axis varies most rapidly and those along subsequent axes progressively less rapidly. Thus, for a 2-dimensional index the first few rows of the index table correspond to index bins (1,1), (2,1), (3,1) and so on, followed by (1,2), (2,2), (3,2), etc.
There is one special case, however, where the number of rows in the index table may be less than the product of all the IAXISn keywords. This can occur when the index would otherwise contain many rows all with IND_LENGTH = 0. A good example of this is the case where a table contains events observed during 2 1000-second exposures taken a year apart. If one tried to construct an index on the TIME column at 10-second intervals, for example, then the index would contain a huge number of rows containing no events during the one year interval between the 2 exposures. The solution to this problem is to compress the size of the index by deleting all rows that have IND_LENGTH = 0. In order to then determine the time interval covered by each remaining row in the index table, it is necessary to include the IND_STARTn column (as defined above) in the table. This special case can be recognized by the fact that NAXIS2 is less than the product of the IAXISn keywords and by the presence of the IND_STARTn column. Example 7 below illustrates this case.