SQL 数据库中查询的最短时间顺序是多少?

what is the minimum time Order of a query in SQL databases?

我想知道给定 SQL(特别是 SQLite)数据库(有 n 条记录)的最短查询时间是多少。 我知道 full table scanO(n) 并且对于索引列(和 RowId)它是 O(log(n)).

第一个问题:有没有时间小于O(log(n))的情况?

第二个问题:为什么查询 RowId (SELECT *FROM table_01 WHERE rowid='234') 也是 O(log(n))?如果它 (RowId) 从 1 到 n 排序,我 逻辑上 期望 SQL 可以 立即 找到具有给定的 RowId

查找特定行需要搜索。 (不一定每个 rowid 都存在,所以数据库需要查找。)乐观的情况,甚至是平均情况,应该比 log(n) 快得多,但最坏的情况不可能,因为它需要搜索列表。

如果要从索引列(SELECT MIN(x) FROM table)中检索最小值或最大值,数据库can simply read the first or last value,时间复杂度为O(1)。

索引存储为 B 树,索引列作为键。
表存储为 B 树,以 rowid 作为键,因此搜索 rowid 与在索引中搜索值一样快。