Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Каждая запись в «index B – tree» состоит из произвольного ключа до 2147483647 байт в длину без данных.А я-то думал, что там 64 бита данных, соответствующих ROWID записи…
Каждая таблица без rowId, представлена в базе в виде «index B – tree». Ключом для дерева является PRIMARY KEY.Э… а остальные-то данные где хранятся, коли мы уже выяснили, что данных в index B–tree нет?
2.4 Representation of WITHOUT ROWID Tables
If an SQL table is created using the «WITHOUT ROWID» clause at the end of its CREATE TABLE statement, then that table is a WITHOUT ROWID table and uses a different on-disk representation. A WITHOUT ROWID table uses an index b-tree rather than a table b-tree for storage. The key for each entry in the WITHOUT ROWID b-tree is a record composed of the columns of the PRIMARY KEY followed by all remaining columns of the table. The primary key columns appear in the order they they were declared in the PRIMARY KEY clause and the remaining columns appear in the order they occur in the CREATE TABLE statement.
Hence, the content encoding for a WITHOUT ROWID table is the same as the content encoding for an ordinary rowid table, except that the order of the columns is rearranged so that PRIMARY KEY columns come first, and the content is used as the key in an index b-tree rather than as the data in a table b-tree. The special encoding rules for columns with REAL affinity apply to WITHOUT ROWID tables the same as they do with rowid tables.
Table without ROWID
Каждая таблица без rowId, представлена в базе в виде «index B – tree». Ключом для дерева является PRIMARY KEY.
ключом для index B-tree является ключ таблицы, в конец которого дописываются все остальные, неключевые, поля
CREATE TABLE ex25(a,b,c,d,e,PRIMARY KEY(d,c,a)) WITHOUT rowid;.(d,c,a, b,e).А я-то думал, что там 64 бита данных, соответствующих ROWID записи…
Э… а остальные-то данные где хранятся, коли мы уже выяснили, что данных в index B–tree нет?
Прочитайте внимательней раздел Representation. Для дерева index b — tree ключом является PRIMARY KEY!Прочитайте внимательнее, я спрашивал про данные, а не про ключ. Кстати, в том же разделе Representation «index b-tree» упоминается два раза, а не один.
В дереве index b — tree на листьях хранятся ссылки страницы данных, а в table b — tree сами страницы данных. То есть не нужно путать запись страницы дерева, и страницы данных в базе.И чем же является эта самая «ссылка страницы данных»? Я-то думал, что это и есть ROWID.
P.S. на оф. сайте при использовании данных терминов ссылаются на книгу Кнута: The Art Of Computer Programming, Volume 3 «Sorting and Searching», pages 471-479Спасибо, читал.
Файловое строение SQLite