调整SQL Server中的大型查询

时间:2017-03-14 17:49:30

标签: sql-server database tsql view query-tuning

我是SQL Server的新手,尽管在Oracle数据库中花了足够的时间。在我管理的当前应用程序中包含许多非规范化的临时表来接收上游数据。

已在临时表上创建视图,每个表包含大约40个表和多个联接。这些视图加载与另一个数据库中的视图同名的datamart表。

这些视图需要花费大量时间才能将datamart表加载大约5小时。逻辑是截断加载,即每天截断整个数据库,并使用格式文件将数据从源系统文件加载到临时区域表中。

如何有意地编写截断加载过程,如何调整这些视图以使加载过程更快?

1 个答案:

答案 0 :(得分:0)

您可能需要查看正常的内容:

  • 启用statistics io以查看哪个表导致查询中的大部分I / O
  • 从实际计划中最左边的节点检查您的查询计划创建未达到超时(因为所有连接)
  • 查看计划中的胖箭头(=正在处理的很多行)
  • 检查计划中的任何昂贵的操作(排序,假脱机,具有大行计数的键查找)
  • 检查计划中估计的数量级差异与实际行数

不要过多关注实际计划中的成本百分比,这些只是估计而且可能极具误导性。

如果没有更多细节(创建表格和索引条款,实际查询计划)等,则很难提供更详细的信息。