我有一個Firebird數據庫,包含一個聯繫人列表,並且對於每個聯繫人,作爲服務和發票列表。c#DataAdapter.Fill性能改進
客戶表的數量級爲10k,發票/服務約爲聯繫人大小的5倍。問題是這些表格包含很多列(最多150列)。我知道這並不理想,但不幸的是,我無法重新設計數據庫,因爲它是按原樣強加的。
現在,我有時間的顯著部分(事實上,有近40%-50%),使用以下代碼花費在數據的純取:
DataTable dataTable = new DataTable();
dataTable.BeginLoadData();
FbDataAdapter fda = new FbDataAdapter(command);
fda.Fill(dataTable);
dataTable.EndLoadData();
我相當的事實,失望獲取30k行需要大約20秒的時間才能撥打唯一的Fill
電話。有沒有希望改進這部分?任何替代(可能是商業)來改善這一點?
你爲什麼要加載30,000行?你在做報告嗎? –
你絕對需要一次加載所有內容嗎?如果不是,那麼最簡單的解決方案將是實現某種分頁(閱讀:一次加載一個較小的數字記錄,然後移動到下一個位)。 – stybl
- 是的。我使用緩衝方法,因爲我需要對數據集進行靈活而沉重的搜索。基於內存的搜索是很多的,在這種情況下比服務器端快得多...... – neggenbe