我有一個問題,無論我多麼努力地嘗試,我都無法解決問題。如何最大限度地提高性能?
這家公司從事市場分析工作,並有相當大的表格(300K-1M行)和許多專欄(想想250-300),我們做一些計算。
I'll試圖讓直行的問題:
的問題是數據的過濾。到目前爲止,我嘗試過的所有數據庫都太慢,無法選擇數據並將其返回。
目前我將整個表存儲在內存中,並使用動態LINQ進行過濾。
然而,儘管這是相當快的(大約100毫秒來篩選250000行),我需要比這更好的結果...
有什麼辦法,我可以在我的代碼改變的東西(沒有數據模型)可以加速過濾嗎?
我已經嘗試使用:
DataTable.Select這是緩慢的。動態LINQ哪個更好,但是 還是太慢了。正常的LINQ(僅用於測試目的)幾乎是 就足夠了。從MySQL中獲取並稍後處理 ,這很糟糕。
在這個項目中,我們認爲,一些高性能的數據庫將能夠處理這個問題的開始,但我想:
H2(IKVM) HSQLDB(編譯ODBC驅動程序) CubeSQL MySQL SQL SQLite ...
而且它們都非常緩慢地接口.NET並獲得結果。
我也嘗試將數據拆分成塊,並在運行時將它們組合起來,以使需要過濾的數據總量更小。
這個宇宙中有什麼辦法可以讓這個更快嗎?
在此先感謝!
UPDATE
我只想補充一點,我還沒有創建有關此數據庫。
要添加一些數字,如果我做一個簡單的選擇2場的(visit_munic_name被索引)數據庫查詢窗口(SQLyog的)是這樣的:
SELECT key1, key2 FROM table1 WHERE filter1 = filterValue1
它發生在225639行125毫秒。
爲什麼這麼慢?我測試了2個不同的盒子。
當然,他們必須改變某些,顯然?
說實話,這不是很多行。聽起來像數據庫結構需要一些嚴肅的關注。 – 2012-02-06 11:39:24
當你使用DB-網絡請求本身或DB側的SQL查詢執行時,你檢查過什麼慢嗎?如果網絡請求/響應緩慢 - 請參閱您是否可以將數據庫託管到應用程序附近,否則調整sql查詢eprformance,表索引等 – sll 2012-02-06 11:41:01
您說選擇數據對於您使用的所有數據庫都很慢。這在我心中引起了一些紅旗。你在選擇中做任何複雜的連接嗎?你有複雜的where子句嗎?你的數據庫是否正確編入索引? – CadentOrange 2012-02-06 11:42:19