On Tue, Mar 5, 2013 at 4:05 PM, Richard Hipp <d...@sqlite.org> wrote:
> Both implementations allow for reading just the prefix of the content blob
> in order to access earlier fields of a table, leaving the tail of the blob
> unread on disk.

This information sparked a bit of a debate among my colleagues, because
since SQLite's back-end is paged, some of them assumed that pages
corresponding (entirely) to un-selected (blob) columns would be
skipped/seeked over, thus avoiding to be read from disk, even if followed
by other columns that are selected.

Am I reading you correctly that this assumption is incorrect?

Concretely, assuming a table with a few scalar columns i, t, r (thus fairly
small in byte size), a couple large to very large blob columns, b1, b2,
followed by a couple scalar columns again e1, e2 (at the end by "mistake"
or as the result of a add-column schema upgrade).

* That table contains a single row, starting on page 5. the i, t, r
values/cells for that row are on that page.
* The b1, b2 blobs of that row spread from page 5 to 875.
* The trailing e1, e2 scalars of that row as also on page 875.

If I select i, t, r, e1, e2, is SQLite reading the two pages (5, 875), or
the whole range (5 - 875)?

Thanks, --DD

PS: The table described above really exists in our software, is often a
large one ( > 1 GB, mostly because of the blobs), and the debate is whether
it's really worth to reorder the columns close to a release.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to