Look into `WITHOUT ROWID` again
- Dominant language
- Rust
- Stars
- 104
- Forks
- 138
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 56
Description
Quite a few of our tables use `WITHOUT ROWID`. While this can be an improvement in many situations, it can also lead to bloat if not used with care.
As a short summary, for tables with non-integer PK, an integer rowid is automatically created. `WITHOUT ROWID` prevents this from being done.
This _can_ be expensive, especially if there is no covering index (an index which includes all columns). What occurs is that indices and FK now contain a copy of the PK -- which may or may not be large. If the table has a `rowid`, then the `rowid` is used instead -- which is an integer and therefore smaller and faster to compare and evaluate.
We should look into our `WITHOUT ROWID` usage again, and confirm that its being used appropriately.
This is probably not urgent.
Contributor guide
Assessment
This issue has not been assessed yet.