2012-03-02 132 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