https://www.sqlite.org/withoutrowid.html
A few years ago SQLite added a feature which can consolidate a non-integer index with the table data in certain cases. Since Chromium has many dbs in the wild, I haven't really pushed using it. This CL:
https://codereview.chromium.org/2390773003/
probably would benefit, though. The main reason not to go for it is that recover.c doesn't support WITHOUT ROWID, and I'd rather have comprehensive error handling than the modest space savings.
WITHOUT ROWID basically stores index-like data in the table. recover.c already contains most of the necessary infrastructure, in fact my development client has additional code to do things like decode indices.
Comment 1 by sh...@chromium.org
, Jun 21 2017