[英]SQL SERVER - Execution plan
我在两个数据库中都有一个VIEW。 在一个数据库中,运行时间不到1秒,但在另一个数据库中运行1分钟或更长时间。 我检查索引,一切都是一样的。 行数之间的差异低于每个其他数据库的1000万行。
我检查de exectuion计划,我发现的是,需要更多时间的数据库,我有3个哈希匹配(1个聚合和2个右外连接),在查询批处理中可以100%响应。 在另一个数据库中,我在执行计划中没有这个。
谁能告诉我在哪里可以开始搜索问题?
谢谢,抱歉英文不好。
基本上,根据您提供给我们的信息,以下是可能出错的一些替代方案:
编辑:
关于下面的评论,重建索引与删除和重新创建索引类似。 由于创建索引还会为这些索引创建统计信息,因此重建也会处理这些索引。 但有时这还不够。
虽然官方默认统计数据应该以实际数据的约20%采样率构建,但实际上采样率可以低至几个百分点,具体取决于表格的大小。 它很少接近20%。 因此,许多DBA使用FULLSCAN手动构建统计数据以获得100%的采样率。
统计数据在任何一种方式都需要相同的存储空间,因此除了维护计划所需的额外时间之外,实际上没有任何缺点。 在我目前的项目中,我们有几种情况,统计数据的默认采样率不够,并且仍会产生错误的计划。 所以我们每隔几周就会定期用FULLSCAN更新所有统计数据,以确保性能保持一流。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.