KB2658214-修复:当你在 SQL Server 2008 或 sql server 2008 R2 或 SQL Server 2012 中运行包含关联和谓词的查询时,性能较差

Microsoft 分发 Microsoft SQL Server 2008 R2 或 Microsoft SQL server 2008 或 Microsoft SQL Server 2012 在一个可下载文件中修复。 由于修补程序是累积的,因此每个新版本都包含以前 SQL Server 2008 R2 或 SQL Server 2008 或 Microsoft SQL Server 2012 更新版本附带的所有修补程序和所有安全更新。

症状

请考虑以下方案。 在 microsoft sql server 2008、microsoft SQL Server 2008 R2 或 Microsoft SQL Server 2012 中运行包含若干 和谓词的查询。 And谓词的条件是相关的。 在这种情况下,SQL Server 2008 中的性能很差。 例如,当你运行类似于以下内容的查询时,将出现此问题:

(column1 = constant1 or column1 = constant2 or …) and (column2 = constant3 or column2 = constant4 or …) and …

原因

出现此问题的原因是查询优化器在查询包含关联 和 谓词时选择了低效的查询计划。 当估计的行数满足 and谓词的条件时,SQL Server 假定所有条件都是独立的。 如果条件相互关联,SQL Server 将 underestimates和 谓词的基数。

解决方案

若要解决此问题,请应用以下累积更新。 应用更新后,必须启用跟踪标记4137才能为基数估计 和 谓语添加新逻辑。注意此更新仅适用于筛选器谓词。

累积更新信息

SQL Server 2008 Service Pack 3

此问题的修补程序首次发布于 SQL Server 2008 Service Pack 3 的累积更新7。有关如何获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2738350 SQL Server 2008 的累积更新包 7 Service Pack 3注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 Service Pack 3 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2629969 发布 SQL server 2008 Service Pack 3 后发布的 SQL Server 2008 版本

SQL Server 2012

此问题的修补程序首次在 SQL Server 2012 的累积更新1中发布。有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2679368 SQL Server 2012 的累积更新包1注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2012 修复版本附带的所有修补程序和所有安全修补程序。 Microsoft 建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2692828 在 SQL Server 2012 发布后发布的 SQL Server 2012 版本 必须将 SQL Server 2012 修补程序应用到 SQL Server 2012 的安装。

SQL Server 2008 R2 Service Pack 1

此问题的修补程序首次在 SQL Server 2008 R2 Service Pack 1 的累积更新5中发布。有关如何获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2659694 SQL Server 2008 R2 Service Pack 1 的累积更新程序包5注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 修补程序版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2567616 在发布 SQL Server 2008 R2 Service Pack 1 之后发布的 SQL Server 2008 R2 版本

SQL Server 2008 Service Pack 2

此问题的修补程序首次发布于 SQL Server 2008 Service Pack 2 的累积更新8中。有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2648096 SQL Server 2008 的累积更新程序包 8 Service Pack 2注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 修复版本附带的所有修补程序和所有安全修补程序。 Microsoft 建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2402659 发布 SQL Server 2008 Service Pack 2 后发布的 SQL Server 2008 版本 为特定 SQL Server service pack 创建 Microsoft SQL Server 2008 修补程序。 必须将 SQL Server 2008 Service Pack 2 修补程序应用到 SQL Server 2008 Service Pack 2 的安装。 默认情况下,SQL Server service pack 中提供的任何修补程序都包含在下一个 SQL Server service pack 中。

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

参考

有关 SQL Server 的增量服务模型的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

935897 从 SQL Server 团队提供的增量服务模型可提供报告问题的修补程序有关 SQL Server 更新的命名架构的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

822499Microsoft SQL Server 软件更新程序包的命名模式有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

824684 用于描述 Microsoft 软件更新的标准术语的说明

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×