Query
導出到 CSV 的訪問速度非常慢
我已經搜尋過,但找不到類似的東西。如果我只是執行查詢,我可以很快得到結果(約 5 分鐘);但是在我保存查詢以導出為 CSV 後,導出部分非常慢(> 30 分鐘)。
結果只有 3 列和大約 30 條記錄;我可以輕鬆複製並粘貼我得到的查詢結果。但是,我想了解這種奇怪的行為。這是一個大約 7GB 的巨大數據庫,這就是為什麼它被分成 4 個不同的文件。我不允許在工作中使用其他軟體,例如 POSTgreSQL 或 mySQL。無論如何,這是我的程式碼(修改了變數名):
SELECT var1, var2, count(*) FROM ( SELECT var1,var2 FROM [XXX10_2006-2010] INNER JOIN [XXXLong_2006-2010] ON [XXX10_2006-2010].ID = [XXXLong_2006-2010].id WHERE [XXXLong_2006-2010].var4 = 'hamburger' AND [XXXLong_2006-2010].cat1 = 'c' AND [XXXLong_2006-2010].cat2 BETWEEN 0 AND 96 AND [XXX10_2006-2010].var5 = 'eggs' UNION all SELECT var1,var2 FROM [XXX10data_2001-2005] INNER JOIN [XXXLong_2001-2005] ON [XXX10data_2001-2005].ID = [XXXLong_2001-2005].id WHERE [XXXLong_2001-2005].var4 = 'hamburger' AND [XXXLong_2001-2005].cat1 = 'c' AND [XXXLong_2001-2005].cat2 BETWEEN 0 AND 96 AND [XXX10data_2001-2005].var5 = 'eggs' UNION all SELECT var1,var2 FROM [XXX9_data_1997-2000] INNER JOIN [XXXLong_1997-2000] ON [XXX9_data_1997-2000].ID = [XXXLong_1997-2000].id WHERE [XXXLong_1997-2000].var4 = 'hamburger' AND ([XXXLong_1997-2000].cat1 ='1' AND [XXXLong_1997-2000].cat2 BETWEEN 40 AND 99) OR ([XXXLong_1997-2000].cat1 ='2' AND [XXXLong_1997-2000].cat2 BETWEEN 0 AND 39) AND [XXX9_data_1997-2000].var5 = 'eggs' UNION all SELECT var1,var2 FROM [XXX9_data_1993-1996] INNER JOIN [XXXLong_1993-1996] ON [XXX9_data_1993-1996].ID = [XXXLong_1993-1996].id WHERE [XXXLong_1993-1996].var4 = 'hamburger' AND ([XXXLong_1993-1996].cat1 ='1' AND [XXXLong_1993-1996].cat2 BETWEEN 40 AND 99) OR ([XXXLong_1993-1996].cat1 ='2' AND [XXXLong_1993-1996].cat2 BETWEEN 0 AND 39) AND [XXX9_data_1993-1996].var5 = 'eggs' ) GROUP BY var1, var2
編輯:如果這一點細節有幫助:顯示導出文本嚮導需要 10 分鐘多一點,然後剩下的過程需要 20 分鐘左右。(雖然有時更長)
在我的腦海中,我可能認為這與擁有 4 個不同的數據庫文件和大型文件有關(不知道為什麼會這樣)。您能否輕鬆地將查詢範圍限定為 1 對 4 個 DB 文件以查看性能是否提高?
聽起來你有 I/O 問題。您是否嘗試將結果 CSV 保存在本地與網路位置?