首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server 2014优化器索引选择性

SQL Server 2014优化器索引选择性
EN

Stack Overflow用户
提问于 2015-05-12 15:20:06
回答 2查看 167关注 0票数 0

我发现SQL Server 2012和SQL Server 2014对相同的查询和执行计划使用了不同的非聚集索引。

我尝试使用fullscan更新所有相关表和所有索引,甚至启动了旧计划,但是SQL Server 2014使用的索引与SQL Server 2012不同。

有没有人也遇到过这个问题?

2012和2014上的优化器是如何决定索引选择性的?

EN

回答 2

Stack Overflow用户

发布于 2015-05-12 16:25:05

SQL Server 2014使用新的基数估计器,这有时会导致糟糕的计划。

这基本上是SQL Server“猜测”计划中每个运算符将返回多少行的新方法。

您可以通过将OPTION (QUERYTRACEON 9481)附加到查询来在特定查询上禁用它(如果评估导致了错误的计划)。

您可以通过将compability设置为低于120的值来在服务器范围内禁用它:

代码语言:javascript
复制
ALTER DATABASE AdventureWorks2012 SET COMPATIBILITY_LEVEL = 110;

您还可以重写查询,以便新的基数估计器实际上比旧的估计器执行得更好。

有很多关于新的基数估计器的信息,我会花一些时间来阅读其中的一些。这是一个很好的开始:http://sqlperformance.com/2013/12/t-sql-queries/a-first-look-at-the-new-sql-server-cardinality-estimator

票数 1
EN

Stack Overflow用户

发布于 2015-05-12 16:50:52

查询优化器是高度复杂的软件,你最好在自己的时间里研究一下,它们会根据最有效的数据路径计算执行计划,然后执行最有效的计划。然而,简而言之。

首先,SQL Server 2014中的基数估计器已重新设计,因此在SQL Server 2014中选择的查询计划可能比在SQL Server 2012上执行的查询计划更优,因为两个平台上的表的底层架构设计是相同的。

如果您可以将您的查询与所有不同的表模式定义一起发布,以确切地了解您正在使用的内容,这将会有所帮助。

Here是指向SQL Server 2014基数估计的链接

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30184281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档