我有一個Sqlite3數據庫的表和一個主鍵組成的兩個整數,我試圖插入大量的數據到它(即約1GB左右)Sqlite3:插入時禁用主鍵索引?
我遇到的問題是創建主鍵也隱式地創建了一個索引,在我的情況下,在一些提交之後插入到爬行(這是因爲數據庫文件位於NFS .. 嘆息)。
所以,我想以某種方式臨時禁用該索引。到目前爲止,我的最佳計劃涉及刪除主鍵的自動索引,但似乎SQLite不喜歡它,並且如果我嘗試這樣做會引發錯誤。
我的第二個最佳計劃是讓應用程序在網絡驅動器上製作數據庫的透明副本,進行修改並將其合併回來。請注意,與大多數SQlite/NFS問題相反,我不需要訪問併發性。
什麼是正確的方式來做這樣的事情?
UPDATE:
我忘了,我已經在使用指定標誌:
PRAGMA synchronous = OFF
PRAGMA journal_mode = OFF
PRAGMA locking_mode = EXCLUSIVE
PRAGMA temp_store = MEMORY
更新2: 我其實分批將物品,但每下一批處理比前一個更慢(我假設這與索引的大小有關)。我嘗試了10k和50k元組之間的批處理,每個元組都是兩個整數和一個浮點數。
它會的。我也只是建議:) – 2009-04-25 10:44:49
是的,但是我可以將整個千兆字節壓縮到一個事務中嗎?我幾乎這樣做是因爲意外(忘記將提交語句放在任何地方),並且我在中途得到了一些磁盤I/O錯誤,儘管我不確定它是否與其相關... – 2009-04-25 17:12:47