使用僅包含特定表中的VARCHAR值的數據庫時,如何在更新此類表時提高性能?如何在SQLite上處理僅具有VARCHAR值的數據時提高性能?
我更新這樣的表的問題是,當獲取新數據時,必須決定是否要INSERT
或UPDATE
這樣的行,但是對於至少有1000行以上的大表可以做什麼?
如果表格很小,我會發現只需執行SQL查詢就可以輕鬆查找新值是否已存在,並根據結果找到INSERT
或UPDATE
。但是,如果你獲得100多條新的數據行,其中一些可能已經或可能不在數據庫中,有些可能是全新的,但我擔心這麼多的查詢會花費不必要的時間完成。
可以刪除數據庫中共享某個值的所有內容,比如說相同的日期,因爲新數據可能比單獨查詢每行更好?
實施例:
1 2 3 ... 20
01/01 A1 A2 A3 ... A20
01/02 B1 B2 B3 ... B20
...
01/31 Z1 Z2 Z3 ... Z20
更新後:
1 2 3 ... 20
01/01 A4 A5 A6 ... A23
01/02 B1 B2 B3 ... B20
...
01/31 Z1 Z5 Z6 ... Z20
實施例2:
1 2 3 ... 20
01/01 A1 ... A20
01/02 B1 B2 B3 ... B20
...
01/31 Z1 Z3 ... Z20
實施例2更新後:
1 2 3 ... 20
01/01 A4 A5 A6 ... A23
01/02 B1 B2 B3 ... B20
...
01/31 Z1 Z5 Z6 ... Z20
使用'INSERT OR REPLACE'。 – CommonsWare
進一步使用基於事務的操作,因此您不必爲插入/替換的每個項目打開/關閉 – tyczj
另一種方法是添加時間戳列,僅返回最後一行(針對每行),無需更新命令,並最終執行一個過程以除去每條記錄的最後一個時間戳。 –