我是R新手,但有興趣使用Shiny使用存儲在SQL Server數據庫中的數據創建動態圖表。爲了實現交互性,我想從數據庫中提取原始數據並在R
內執行計算,而不是讓數據庫彙總數據。R:使用RODBC和SQL Server緩慢讀取性能
我能夠使用RODBC
連接到數據庫,執行查詢並以data.frame
接收結果。但是,R
中的讀取時間比在SQL Server Management Studio(SSMS)中執行的相同查詢的時間長大約12倍。 SSMS需要約600毫秒,而R
需要約7.6秒。我的問題是我做錯了什麼,或者是數據庫訪問真的很慢?如果是這樣,是否有更快的選擇(例如將數據庫輸出寫入文件並讀取文件)?
有關可能有所幫助的查詢的一些信息:查詢將檢索包含4列的大約250K行。第一列是日期,其他三個是數字值。運行R
的機器和SSMS是32GB內存的高端Win 7工作站。我正在運行的R
命令是:
system.time(df <- sqlQuery(cn, query))
返回:
user system elapsed
7.17 0.01 7.58
有趣的是,它似乎是從SQL數據傳送到我的機器速度快,但R
忙於內部做的事情幾秒鐘後再返回data.frame
。我看到這一點是因爲網絡利用率在第一秒內出現峯值,幾乎立即回到接近0.然後幾秒鐘後,R
data.frame
返回。
很確定這只是很慢,我們評估了一段時間,並決定去另一條路線,然後使用RODBC,它只是減速,除非是非常簡單的查詢。 – Hansi