我可以在36秒內使用Matlab的DB工具箱導入200萬行。如何在20分鐘內導入600萬行?從SQL數據庫導入數據到MATLAB:2密爾行需要30秒,但6密爾需要21分鐘?
以下查詢的最終提取步驟大約需要36秒。
q = 'select ... from mytable limit 2000000'; %notice 2 mil limit
result = exec(conn, q);
final_result = fetch(result); % Takes about 36 seconds.
我的整個表格有6,097,227行。 但是,如果我做的:
q = 'select ... from mytable';
result = exec(conn, q);
final_result = fetch(result);
MATLAB 完全失去了它最終取一步! CPU使用率約爲500-600%(即正在使用6/8個內核),並且需要永久使用。目前,它設置爲10k批次,最終在21分鐘內完成。
想法?該怎麼辦?我真的很努力地想知道這在行數上如何不至少是線性的。我是否跨過了一些奇怪的限制?
順便說一句:整個查詢和導入到R使用PostgreSQL驅動程序等在R中需要大約43秒...和0擺弄。我可以使用ODBC在類似的時間導入Stata。
注意:在上面的查詢中...
是10個左右的數字變量:一些整數,一些雙精度。沒有文字。
你可以使用Node.js來進行導入嗎? –
@ vitaly -t我真的不知道Node.js在這裏如何應用? (我編輯了一下這個問題,我可能一直不清楚。) –
在這種情況下,我只能在一般情況下提出建議,正如我在下面的答案中所做的那樣。 –