【发布时间】:2018-07-03 17:56:54
【问题描述】:
我有一个使用 SQLite 数据库存储用户输入数据的 RecyclerView 项目列表。我使用传统的 _id 列作为 INTEGER PRIMARY KEY AUTOINCREMENT。如果我理解正确,数据库中新插入的行将添加到现有行下方,新的 ROWID 采用最大的现有 ROWID 并将其增加 +1。因此,对最新插入的游标搜索将不得不向下扫描整个行集以到达数据库的底部。例如,插入 10 次后,光标必须从 1、2、3、... 向下搜索,直到到达第 10 行。
为了避免对整个 ROWID 集进行冗长的搜索,有没有办法将新的插入添加到数据库的顶部而不是底部?这样,使用 moveToFirst() 对最新插入的游标搜索将非常快,因为游标将停在它搜索的第一行,即数据库的顶部。游标将搜索 10、9、8、...3、2、1,因此搜索会非常快,因为它会在 10 处停止,即数据库顶部的第一行。
【问题讨论】:
-
您是否假设所有数据库查询都使用按 ROWID 升序排列的线性搜索?
标签: database sqlite android-cursor