2

我使用 MS Access 2007 作为前端,并在 SQLServer 2008 R2 后端拥有所有链接表。

在 Access 中的表单中,我尝试在功能区中执行“查找”按钮,或者通过在表单上创建一个按钮,其目的是在特定字段中查找具有特定值的记录。

当我在 FIND 窗口中完成输入时,我单击Find Next。在某些情况下,会立即找到记录。在其他情况下,它可能会持续数小时才报告它找不到任何东西(当我知道它应该找到时)。

我正在查看的表中有大约 99,000 条记录。该字段是否被索引似乎并不重要。

是我做错了什么,还是 Access 无法处理?此外,是否正在创建一个存储过程来处理多个搜索请求并将信息传递给访问答案?

4

2 回答 2

1

众所周知,对于 ODBC 数据源,查找方法很慢。以下是 Access 2007 Recordset.FindFirstMethod 帮助主题的内容:

使用 Microsoft Access 数据库引擎连接的 ODBC 数据库和大型动态集类型 Recordset 对象时,您可能会发现使用 Find 方法或使用 Sort 或 Filter 属性很慢。要提高性能,请使用带有自定义 ORDER BY 或 WHERE 子句、参数查询或检索特定索引记录的 QueryDef 对象的 SQL 查询。

此外,将 Access 表单绑定到 99K 记录的记录源是一项性能挑战。使用查询作为表单的记录源,并将查询设计为仅返回一行或几行。

为用户提供选择不同行集的选项,并修改表单的记录源属性以反映用户的选择。

于 2012-08-09T16:19:14.837 回答
0

这取决于您需要的搜索类型以及要搜索的列(字段)的数据类型。例如,如果我在索引列中有文本数据类型,并且我使用 Start of field 或 Whole field 进行搜索,它会非常快,但是,如果我搜索字段的任何部分,它很可能会失败。换句话说,如果 Access 可以使用索引进行搜索,即使在相当大的表上也可以工作,否则,您可能最好使用存储过程,尽管我怀疑没有索引也会很快。

于 2012-08-09T15:16:04.717 回答