2012-03-02 62 views
2

我有两列简单的表:“ID”INTEGER作为一个关键,和“数据”INTEGER。sqlite:保存数组?

用户要求之一是保存他查看数据的顺序。 所以我必须保存表中记录的顺序。

我看到的简单解决方案:id,data,order_id。 但在这种情况下,如果用户将记录添加到其表格视图的中间,我们必须更新许多记录。

另一种想法:id,data,next_id,previous_id。 插入速度很快,但按照定义的顺序提取记录速度很慢。

那么什么是最好的(快速)方法来保存使用sqlite表 记录的顺序?快速=快速插入+以定义的顺序快速提取记录。

更新: order_id的问题与我在插入新记录时看到的一样。我希望我们有10 * 10^3条记录。插入新记录将在所有10 * 10^3记录的最坏情况下更新。 sqlite数据库文件在闪存上。所以它不如PC上那么快,并且会更好地减少“写入”大小,从而延长闪存的使用寿命。

回答

0

我认为ORDER_ID是更好的,你只需要一个更新指令

update table 
    set order_id = order_id + @newRecordOrder 
where id = @id 
    and order_id > @newRecordOrder 

我不知道这是否为了是唯一的所有表或一个子集,因此需要第二个PK场。

+0

与我看到的order_id的问题,如果我们例如我们有5000条记录并插入101条记录,我们必须更新4500条记录。 sqlite数据库在闪存中。所以它的速度与使用硬盘的PC速度一样快。 – user1244932 2012-03-02 12:16:31

+0

好吧,我想那么这是更多的问题,你会插入无序ID的频率,你会按照顺序搜索数据的频率... – 2012-03-02 14:41:17

+0

顺便说一句,我不认为你需要同时使用previous_id和next_id,只有一个就足够了。另外,任何插入都意味着对下一个/上一个ID指向插入记录的记录进行更新。 – 2012-03-02 14:41:45