sqlite,获得一行的最快方法是什么?

sqlite, what is the fastest way to get a row ?

如果我想得到第一行,通常我使用这样的查询:

SELECT * FROM tableOfFamousUndeadPeople  WHERE ID = 1

我想 sqlite 检查所有行的 ID 然后我得到结果。因此,如果我的 table 有 n 行,则时间为 O(n)。

实际上,我的 ID 列有标志 INTEGER PRIMARY KEY,我不知道 sqlite 是否做了一些 blackmagick 技巧来加速。我不知道是否有另一种方法来获得一行。我真的不明白如何使用 ROWID 或者我的 ID 列是否用作 ROWID

时间比O(n)好很多。数据库存储排序的主键(还有其他索引),以便它可以执行二进制搜索以找到所需的行。

时间复杂度为O(log(n))

http://bigocheatsheet.com/

what is the fastest way to get a row ?

使用区分度高的索引(包括主键)进行搜索。

(区分索引是指其中许多值大多是唯一的。索引性别不是很好,因为它将 table 分为两类,男性和女性。索引邮政编码非常好适用于大多数用途。使用主键是理想的,因为每个值都保证是唯一的)。