Earlier quoted context omitted.
B-Tree indexes are designed to work like this, to require a low number of IO operations. The index contains pointers to other places in the index.
So the answer is “yes, it has to download the index first”? None of these comments answer my question.
For the example the wdi_data table is 300MB and an index on it is 100MB in size. This index has a tree depth of 4 - which means SQLite has to read exactly 4 pages (4KiB) to get to the bottom of it and find the exact position of the actual row data.
you can check the depth of the b-trees with `sqlite3_analyzer`.