我有一个关于使用INT主键将某些项插入到表中任意位置时所使用的机制的问题。我知道它将使用二进制搜索来执行带有rowid或INTEGER主键的SELECT和WHERE。我想知道的是,当使用主键插入时,查询计划使用相同的二进制搜索。
以下是示例。
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');非常感谢。
发布于 2018-12-22 11:39:20
SQLite中的主键列由B树索引提供支持。因此,在表carBrand中插入(4, 'AUDI')的成本就是重构主键索引的成本。理论上,B树插入通常是对数的。实际上,在数据库上下文中,由于多种原因,给定的insert可能会较慢。例如,如果一个块没有更多的空间,数据库可能不得不搜索附近的其他空间来写入记录,或者在更糟糕的情况下,甚至可能在整个块周围移动。
发布于 2018-12-22 11:36:56
SQLite只会像之前的插入一样插入它。它不做乱序插入,和按顺序插入没有任何不同。
https://stackoverflow.com/questions/53892828
复制相似问题