OFFSET中指定的值是否与rowid(sqlite)相同?

时间:2015-08-13 08:54:00

标签: sqlite query-optimization cursor-position

我的sqlite表需要一个简单的滚动功能,返回上一次选择的X记录或下一个X记录。正如规则#2 "Do not try to implement a scrolling window using LIMIT and OFFSET"所述,我从

更改为sql
SELECT * FROM tracks WHERE xxx  LIMIT 5 OFFSET :index

SELECT * FROM tracks WHERE xxx  and rowid > :index LIMIT 5 

我做了一些简单的测试,结果似乎相同,例如。 从其中rowid>的曲目中选择rowid 100限制5 从曲目限制5偏移100 中选择rowid都会在rowid 100之后返回相同的5条记录。

所以我的问题是< 1> OFFSET中指定的值与rowid相同(假设我没有删除记录)? &LT 2 - ;我的改变更好了吗?

更新,我知道删除记录时,rowid可能会发生变化。所以我的问题是假设我没有删除记录,OFFSET中使用的值是否与rowid相同?如果不是,这个值究竟意味着什么?如果我删除了一些记录,那么这个值究竟意味着什么呢?

另外,那篇文章说“这个信息已经过时了”但我找不到更新的信息!

1 个答案:

答案 0 :(得分:1)

删除某些行后,rowid号码不再与索引相同。

要显示下一页的行,您不应使用index值,而应使用从最后一页排序的列的最后一个值。