UltraLite Database User's Guide
UltraLite Databases
Information storage in UltraLite databases
UltraLite indexes are B+ trees with very small index entries.
Except for pure Java databases, each index entry is exactly two bytes, and each index page contains 256 entries. Since index pages are rarely 100% full and each index has some fixed overhead, the memory used by an UltraLite index is more than two bytes per row in the table. The overhead for each index is just over 1 kb per index. Typically, UltraLite index pages on larger tables will be least 85% full.
No similar consistent rule can be given for the memory requirements of UltraLite Java databases.