Будет ли sqlite всегда вставлять новые записи в конец таблицы? - PullRequest
0 голосов
/ 23 октября 2018

Когда мы вставляем запись в таблицу sqlite, она всегда вставляется в конец таблицы или, если записи были ранее удалены, есть ли вероятность, что записи сначала заполнят пустое пространство перед добавлением в конец?

1 Ответ

0 голосов
/ 23 октября 2018

SQLite, как и многие другие базы данных, на самом деле не имеет понятия положения записи (в отношении обычного пользователя), за исключением того, что для таблиц автоматически присваивается rowid , который будетбыть уникальным идентификатором, который обычно увеличивается на 1 (не то чтобы это гарантировано).Числа Freed rowid могут использоваться повторно (не при использовании AUTOINCREMENT), но только до тех пор, пока не будет использован rowid 9223372036854775807.Этот rowid , как правило, является наиболее эффективным средством доступа к строке (записи).Далее многое объясняется в столбце rowid Автоинкремент SQLite .

  • При определении таблицы можно использовать БЕЗ ROWID (для более поздних версийверсии SQlite), в этом случае столбец rowid не будет.

  • Часто используется псевдоним столбца rowid .Псевдоним определяется кодированием ??INTEGER PRIMARY KEY (с необязательным ключевым словом AUTOINCREMENT).

    • Примечание VACUUM может измениться rowid , если псевдоним не был назначен.

Если вы хотите, чтобы строки были в определенном порядке, тогда вы используете ключевое слово ORDER BY при запросе таблиц.В этом случае результирующий набор упорядочен.

Однако, опять же, как и многие базы данных, он пытается эффективно управлять хранилищем, хотя можно использовать команду VACUUM SQL как понятно SQLite VACUUM или включив автоматический вакуумный режим через прагму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...