2011-07-25 87 views
0

因爲我不熟悉底層的ADO,所以我想知道使用VB6找到記錄的兩種方法中的哪種方法通常會產生更快的結果。ADO搜索性能

  1. 使用'select'語句使用'where'作爲限定符。如果記錄集計數爲零,則記錄未找到。

  2. 選擇所有使用客戶端遊標遍歷記錄的記錄,直到找到記錄或根本沒有。

記錄集在10000條記錄的範圍內,並且會增長。另外,除了提到的內容之外,我願意接受任何可以縮短搜索時間的內容。

回答

1

在每種情況下我都能想到,使用where子句選擇更快。

即使在客戶端代碼將遍歷整個數據庫(例如Access等基於文件的數據庫)的情況下,您也會優化以c或C++編寫的代碼(在數據庫驅動程序中)。總是比VB6快。

對於數據庫引擎(SQL,MySQL等),性能的提升甚至會更加深刻。通過使用where子句,可以限制必須通過網絡傳輸的數據量,極大地提高了響應速度。

一些額外的性能提示:

你想
  • 只選擇字段。
  • 在頻繁使用的字段上建立索引
  • 查看您要返回的記錄集類型。如果您只是從數據庫返回數據,請使用僅前向遊標。

最後,我對VB.NET的數據庫性能感到震驚,它比最快的VB6代碼快幾倍。

+0

真棒解釋 –

3
SELECT count(*) FROM foo WHERE some_column='some value' 

如果結果大於0,則在數據庫中找到滿足您的條件的記錄。這不太可能會比這更快。在WHERE子句中使用的列的適當索引可以顯着提高性能。