我是SQL Server的新手,尽管在Oracle数据库中花费了足够的时间。在当前的应用程序中,我管理的是许多可接收上游数据的符合分期表。
在分期表上创建了视图,每张表由大约40个表和多个连接组成。这些视图加载与另一个数据库中视图的同名数据的数据玛特表。
这些视图花费大量时间来加载DataMart表约5小时。逻辑是截断负载,即每天都将整个数据库截断,并使用格式文件从源系统文件加载数据。
如何调整这些视图以使负载过程更快,因为截断负载过程是故意编写的?
您可能需要研究普通的东西:
- 打开
statistics io
查看哪个表引起查询中的大多数I/O - 从实际计划中的最左节点检查您的查询计划创建不会进入超时(因为所有加入)
- 在计划中查看脂肪箭(=很多行要处理)
- 在计划中检查所有昂贵的操作(类型,线轴,钥匙查找)
- 检查计划中的估计数与实际行数的数量级差异
不要对实际计划中的成本百分比高度关注,这只是估计,并且可能会引起极大的误导。
没有更多详细信息(创建表格& index子句,实际查询计划)。提供更多详细信息是非常困难的。