我想知道在给定的 SQL
(特别是 SQLite
)数据库(有 n 条记录)中的最短查询时间是多少。
我知道全表扫描
是O(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) 快得多,但最坏的情况不可能,因为它需要搜索列表。
关于sql - SQL 数据库中查询的最短时间顺序是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47565313/