Content of Row Pointer Array for Value Ordering


Content of Row Pointer Array for Value Ordering


In case of a NUSI ordered by ROWHASH the array of row pointers in each NUSI data block contains the orderd ROWID of its rows. Basically (leaving the UNQIUENESS value beside), it is ordered by the ROWHASH.

I wonder how the row pointer array looks like in case of a value ordered NUSI? Does it carry the ordered values (for example a date)? I would assume so, as we have this restriction in value ordering to exactly one column of a 4-BYTE integer type i.e. it looks to me the row pointer array can carry either the 4-Byte ROWID or the 4-BYTE value for value ordering.

If this would be the case, how do the Master Index and Cylinder Index look like? Are they carrying as well the 4-BYTE Integer value instead of the ROWHASH/ROWID ? 

To me it seems this is the way the information is stored for value ordering, as a binary search on the Master and Clyinder Index could take place to identify data blocks carrying the searched value(s) (insetad of ROWHASHes). 

Does somebody has more inisght on this topic? As far as i understood the data blocks of a NUSI can be binary searched or full table scanned (i.e. a full table scan on the NUSI subtable). How would for example look a FTS on the NUSI for a date range in case of a value ordered index? Why is it such a big advantage and a use case for value ordering? 

Thanks in Advance


Roland Wenzlofsky