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

时间:2015-01-15 17:13:09

标签: c++ sqlite

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

SELECT * FROM tableOfFamousUndeadPeople  WHERE ID = 1

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

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

1 个答案:

答案 0 :(得分:3)

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

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

http://bigocheatsheet.com/

  

获取行的最快方法是什么?

使用具有高度辨别力的索引(包括主键)进行搜索。

(歧视指数是许多值大多是唯一的。索引性别不是很好,因为它将表格分为两类,男性和女性。为大多数目的索引邮政编码非常有用。主键是理想的,因为每个值都保证是唯一的。)