Great question! I actually came across this term level of indirection
in my database course. The slides for this course does not even provide any information regarding 'indirection' or how to use it, but it challenges students with a question like this:
... suppose the file is unordered by the non-key field DEPTNUMBER and we want to construct a secondary index on DEPTNUMBER with one level of indirection that stores record pointers.
Your understanding mentioned makes the subtle thing clear to me:
From what I understood, indirection is a fancy name for using a pointer of a value instead of the value itself.

Here I attach a picture in the question to illustrate. The so-called level of indirection
is nothing but some blocks of memory containing pointers
, which is a bridge between the indexes
and the data
. So here, instead of having one index for each record in the data file, it uses an aditional layer composed by pointers
, making the indexes between the index file and the level of indirection(block of record pointers) sparse.
And my understanding for this is it offers a good trade-off between memory usage and look-up speed by having a sparse(non-dense) index as well as a dense index for a unordered
data file.
Unfortunately I could not manage to find a good explanation for the term level of indirection
with respect to its implementation for database on the internet while my school's slides is just trash(it does not even cover it but they make questions with it).
Please comment if you have a good source or if I have mistaken with anything here. I would really appreciate that!