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

标签 sql algorithm sqlite database-optimization

我想知道在给定的 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/

相关文章:

Android studio 模拟器 sqlite db 文件

sql - 使用一组值 sql 更新多行

algorithm - 我们如何用大 O 表示法来表示以下函数?

android - 扩展的 SQLiteOpenHelper 类每次都调用 onCreate 吗?

php - 根据条件从数组中删除值

algorithm - 为什么我的 Haskell 代码似乎没有并行运行

RSQLite 并将数据读入内存

sql - 使用第一个查询的值执行第二个查询

SQL join 2 tables with conditions on other tables

java - Mysql 将用户表与其他表连接起来