2011-07-25 169 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子句中使用的列的适当索引可以显着提高性能。