2016-01-08 128 views
0

我們在informix數據庫表中有2.3億條記錄,我們將表分成4個部分,但仍然花費大約80秒來插入/更新2000條記錄,有人建議更好的想法,以減少時間少於20秒?Informix數據庫表更新

+0

索引是否針對您正在尋找的操作進行了優化? –

+0

是的,有沒有臨時表或緩存技術適用於此? –

+2

這個問題中的信息非常少。 2.3億條記錄是一個很大的數字,但是行數有多寬?每行是4個字節還是400個字節或4000個字節?你正在做的更新的性質是什麼?你是否讓DBMS在每一行上執行復雜的計算?你正在更新關鍵列(那些是主鍵或外鍵的一部分)?你正在更新索引列嗎?你正在運行單個UPDATE語句,還是使用UPDATE ... WHERE CURRENT OF _cursor_name_並使系統將每行發送到客戶端並返回到服務器? –

回答

0

使用光標可能會加速很多事情。但在刷新或關閉行之前請記住,可能無法讀取「讀取乾淨」行。 我不知道你在用什麼樣的語言,所以我選擇4js genero作爲例子。

PREPARE p FROM "INSERT INTO mytable VALUES(?, ?, ?)" 
DECLARE c CURSOR FOR p 
OPEN c 
WHILE (...there's more data to process...) 

    PUT c USING v1, v2, v3 
END WHILE 
CLOSE c 
0

SET PDQ PRIORITY可能是一個。另外,創建(正確)索引後更新統計數據(高)可以幫助很多。