首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQLite3中使用INT主键在任意位置插入表的开销

问在SQLite3中使用INT主键在任意位置插入表的开销
EN

Stack Overflow用户
提问于 2018-12-22 11:30:59
回答 2查看 46关注 0票数 0

我有一个关于使用INT主键将某些项插入到表中任意位置时所使用的机制的问题。我知道它将使用二进制搜索来执行带有rowid或INTEGER主键的SELECT和WHERE。我想知道的是,当使用主键插入时,查询计划使用相同的二进制搜索。

以下是示例。

代码语言:javascript
复制
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');

在执行完这些命令后,如果我喜欢,查询计划将使用什么方法

代码语言:javascript
复制
INSERT INTO carBrand VALUES (4, 'AUDI');

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-22 11:39:20

SQLite中的主键列由B树索引提供支持。因此,在表carBrand中插入(4, 'AUDI')的成本就是重构主键索引的成本。理论上,B树插入通常是对数的。实际上,在数据库上下文中,由于多种原因,给定的insert可能会较慢。例如,如果一个块没有更多的空间,数据库可能不得不搜索附近的其他空间来写入记录,或者在更糟糕的情况下,甚至可能在整个块周围移动。

票数 0
EN

Stack Overflow用户

发布于 2018-12-22 11:36:56

SQLite只会像之前的插入一样插入它。它不做乱序插入,和按顺序插入没有任何不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53892828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档