Стоимость вставки в таблицу в произвольной позиции с использованием первичного ключа INT в SQLite3 - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть вопрос о механизме, который используется, когда мы вставляем какой-либо элемент в таблицу в произвольной позиции с первичным ключом INT.Я знаю, что он будет использовать двоичный поиск для выполнения SELECT и WHERE с rowid или INTEGER первичным ключом.То, что я хочу знать, это то, что план запроса использует тот же двоичный поиск, когда он вставляется с первичным ключом.

Ниже приведен пример.

CREATE TABLE carBrand
(
    brandID INTEGER PRIMARY KEY, 
    branName TEXT
);

INSERT INTO carBrand VALUES (2, 'BMW');
INSERT INTO carBrand VALUES (3, 'KIA');
INSERT INTO carBrand VALUES (5, 'FORD');
INSERT INTO carBrand VALUES (8, 'AUDI');

После этих команд, какой метод будетиспользуйте план запроса, если мне нравится

INSERT INTO carBrand VALUES (4, 'AUDI');

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Столбцы первичного ключа в SQLite поддерживаются индексом B-дерева.Таким образом, стоимость вставки (4, 'AUDI') в вашу таблицу carBrand - это стоимость реструктуризации индекса первичного ключа.Теоретически, вставка B-дерева, как правило, будет логарифмической.На практике в контексте базы данных данная вставка может выполняться медленнее по ряду причин.Например, если в блоке больше нет места, базе данных, возможно, придется искать поблизости другое место, чтобы записать запись, или, в худшем случае, возможно, даже перемещаться вокруг целых блоков.

0 голосов
/ 22 декабря 2018

SQLite просто вставит его так же, как и предыдущие.Он не делает не по порядку вставки иначе, чем по порядку.

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