2012-01-31 53 views
0

我正在轉換悖論編寫的數據庫應用程序Delphi使用SQL Server 2008 R2。我們使用來自Devart的UNIDAC組件來訪問數據庫/表。但是,我發現性能相當緩慢。例如,在Paradox版本中,當打開一個包含100,000條記錄的表(使用TTable)時,它或多或少是即時的,但SQL Server(使用TUniTable)大約需要2秒。現在我知道這似乎不是很多,但有10個TUniTable數據集在表單創建時打開,所有這些數據集都包含大約相同數量的記錄,因此目前打開它們的時間不到20秒。有沒有人有任何性能提示?使用TUniTable的性能問題

我使用的是2007年德爾福

+5

這與UniDAC無關。您應該*永遠不*使用對SQL數據庫的表類型訪問;這意味着(對於幾乎所有的服務器),100%的數據傳輸到客戶端。您應該使用查詢,並使用特定的列列表和WHERE子句限制正在檢索的數據,從而減少行數。 – 2012-01-31 01:31:01

回答

2

恕我直言,UniDAC TUniTable只是一個TUniQuery包裝。 TUniTable打開可能會導致獲取SQL Server上的所有記錄。不知道如何,但嘗試更改SQL Server光標類型和/或位置。

如果不晚,則考慮使用AnyDACTADTable。它使用「實時數據窗口」技術,該技術允許打開並瀏覽大型表格而不會出現明顯的延遲,例如OpenLast呼叫總是很快。我們將幾個BDE應用程序遷移到AnyDAC和Firebird,TADTable工作真的很棒。

+0

Ken White的警告對於AnyDAC仍然有效,查詢(以SQL爲中心)的性能將優於表(主要推薦用於桌面數據庫)。 – menjaraz 2012-01-31 08:35:36