FIX: 的 LIKE 子句使用 Jet OLEDB 提供程序的效率低使用

文章翻译 文章翻译
文章编号: 311159 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

当您执行 SQL 查询使用 Microsoft Jet OLEDB 提供程序 4.0 LIKE 子句应用于链接 SQL Server 表时 LIKE 子句未被正确转发 Microsoft Jet 查询处理器为 SQL Server。 这会导致一个效率较低的总体查询,因为所有的行第一次从检索 SQL Server 本地是 Jet。

请注意的是 Jet 本地检索所有的行后,LIKE 子句在内部之前应用到最终结果将结果发送到客户端,这样最终结果是相同的行集。

解决方案

若要解决此问题,安装最新的 Microsoft Jet 4.0 服务包。有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
239114如何: 获取最新的 Service Pack,对于 Microsoft Jet 4.0 数据库引擎

状态

Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中的问题。此问题已修复 Jet 4.0 服务包 6 (SP6) 中。

更多信息

重现行为的步骤

  1. 创建一个新的 Microsoft Access 数据库,名为"C:\DB1.MDB"。
  2. 在 Microsoft Access 中打开 C:\DB1.MDB 并创建到位于 SQL Server 服务器上在 pubs 数据库中的 作者 表的链接的表。保留 dbo_authors 的默认链接的表名称。
  3. 运行下面的查询使用 Microsoft Jet OLEDB 提供程序 4.0,对 Access 数据库 C:\DB1.MDB
    SELECT * from dbo_authors WHERE state LIKE 'M%'
    					
如果监视使用 SQL Server 事件探查器实用程序,在后端 SQL Server 服务器,您将看到下面的 SQL 语句发送到 SQL Server,Microsoft Jet 查询优化器正在将 LIKE 条件应用在 authors 表中检索的所有行后,该值指示。请注意所有非关键的 SQL 语句走,注释已添加到描述各种 Microsoft Jet 由发送的 SQL 语句。
-- This is sent first by Jet to fetch all key values.  
-- Note that WHERE state LIKE 'M%' is not applied here.

SELECT au_id, state FROM authors 

-- This retrieves a single row using the first key value retrieved by the
-- above SQL statement. Jet will apply the LIKE clause internally
-- before retrieving the first row.

SELECT au_id,au_lname,au_fname,phone,address,city,state,zip,contract  
FROM dbo.authors WHERE au_id = @P1 
				
如果您运行相同的 SQL 查询使用 Microsoft Access ODBC 驱动程序,LIKE 子句正确转发到 SQL Server 导致效率更高的总体查询在第一个 SQL 语句中。

属性

文章编号: 311159 - 最后修改: 2005年10月12日 - 修订: 1.4
这篇文章中的信息适用于:
  • Microsoft OLE DB Provider for Jet 4.0
关键字:?
kbmt kbhotfixserver kbqfe kbbug kbfix kbqfe KB311159 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 311159
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com