调整SQL Server中的大型查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调整SQL Server中的大型查询相关的知识,希望对你有一定的参考价值。
我是SQL Server的新手,尽管在Oracle数据库中花了足够的时间。在我管理的当前应用程序中包含许多非规范化的临时表来接收上游数据。
已在临时表上创建视图,每个临时表包含大约40个表和多个联接。这些视图加载与另一个数据库中的视图同名的datamart表。
这些视图需要花费大量时间才能将datamart表加载大约5小时。逻辑是截断加载,即每天截断整个数据库,并使用格式文件将数据从源系统文件加载到临时区域表中。
如何截断加载过程是故意编写的,如何调整这些视图以使加载过程更快?
答案
您可能需要查看正常的东西:
- 打开
statistics io
以查看哪个表导致查询中的大多数I / O. - 从实际计划中最左边的节点检查您的查询计划创建没有结束到超时(因为所有连接)
- 查看计划中的胖箭头(=正在处理的很多行)
- 检查计划中的任何昂贵的操作(排序,后台打印,具有大行计数的键查找)
- 检查计划中的估计与实际行数的数量级差异
不要过多关注实际计划中的成本百分比,这些只是估计而且可能极具误导性。
如果没有更多细节(创建表和索引子句,实际查询计划)等,则很难提供更详细的信息。
以上是关于调整SQL Server中的大型查询的主要内容,如果未能解决你的问题,请参考以下文章
带有相关子查询的 While 循环的 SQL Server 性能调整