SQL Server统计信息:问题和解决方案.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL Server统计信息:问题和解决方案 时间?2014-08-04 14:13:59?? HYPERLINK /sites/vQZRB3 \t _blank CSDN博客 原文?? HYPERLINK /kevinsqlserver/article/detailsutm_source=tuicoolutm_medium=referral /kevinsqlserver/article/details 主题? HYPERLINK /topics\t _blank SQL Server? HYPERLINK /topics\t _blank SQL 在网上看到一篇介绍使用统计信息出现的问题已经解决方案,感觉写的非常全面。在自己看的过程中顺便做了翻译。由于本人英文水平有限,可能中间有一些错误。如果有哪里有问题欢迎大家批评指正。建议英文好的直接看原文:? HYPERLINK /sql/performance/sql-server-statistics-problems-and-solutions/ \t _blank SQL Server Statistics: Problems and Solutions 正文: SQL Server统计信息协助查询优化器计算运行查询的最优方式. Holger描述了常见的统计信息出错的事情,并且如何改善 通常你不需要太担心执行SQL查询的方式.他们被传送到查询优化器,首先检查是否有可用的执行计划.如果没有,就编译一个计划.为了做的有效率,他需要能够从各种替代策略的结果中评估中间行数. 数据库引擎保存了表中每个索引键值的分布统计信息,并且用这些统计信息确定哪些索引用于编译执行计划.然而如果这些统计信息存在问题,性能就受到影响.统计信息会出什么问题?如何修正?我们将通过最常见的问题解释它如何发生和如何处理。 本章包含的内容: l?没有统计信息 l?关闭自动更新统计信息选项 l?表变量 l?XML 和空间数据 l?远程查询 l?数据库只读 l?统计信息存在,但是没有正确使用 l?在SQL 脚本中使用本地变量 l?判断中使用表达式 l?统计信息不准 l?样本不足 l?统计信息力度太大 l?过时统计信息 l?没有自动为多列生成统计信息 l?统计信息不支持相关列 l?更新统计信息是有代价的 l?内存分配问题 l?内存需求估计过高 l? HYPERLINK /sql/performance/sql-server-statistics-problems-and-solutions/ \l twentyfirst \t _blank Best practices?最佳实践 There is no statistics object at all 没有统计信息 如果没有统计信息,查询优化器只能猜行数而不能估计他们,相信我这不是你要的。 有几种方法可以在估计和实际的执行计划中找到查询优化器是否丢失了统计信息。在这种情况下在计划中会看到警告。图形显示的执行计划会中有一个感叹号,并且在扩展的属性有警告如图1。你不会看到关于表变量的警告,所以小心表变量的表扫描和行估计。 Picture 1: Missing statistics warning 如果你想查看当前语句的执行计划,可以用DMV sys.dm_exec_cached_plans。 SQL Server profiler提供了另外一种选项。如果你在Profiler中使用Event Errors/Warings/Missing Column Statists等事件,当优化器检测到丢失统计信息,你可以观察到日志。注意如果数据库或者表启用了AUTO CREATE STATISTICS选项,这个事件不会被触发。 有几种情况,你会经历丢失统计信息: 自动创建统计信息关闭 问题: 如果你关闭了 AUTO CREATE STATISTICS OFF选项,并且忽视了手工创建统计信息,优化器会遭受丢失统计信息之苦。 解决方案: 依赖自动创建统计信息,将AUTO CREATE STATISTICS选项设置为ON。 表变量 问题: 对于表变量,从来不维护统计信息。记住:关于表变量没有统计信息。当从表变量查询,估计的行数实始终是1,除非断定的求值结果为false和表变量没有关系(比如where 1=0),在这种情况下,估计返回的行数为0. 解决办法: 如果临时表包含多行数据,不要指望表变量为临时表。作为一个经验法则,对于超过100行的临时表使用临时表(#为表名称的第一个字符)而不是表变量。 XML和空间数据 问题: SQL Server不维护XML和空间数据的统计信息,这是

文档评论(0)

celkhn5460 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档