【发布时间】:2017-03-14 17:49:30
【问题描述】:
我是 SQL Server 的新手,但在 Oracle 数据库中花费了足够的时间。在我正在管理的当前应用程序中,包含许多用于接收上游数据的非规范化临时表。
已在临时表上创建视图,每个表由大约 40 个表和多个连接组成。这些视图加载与另一个数据库中的视图同名的数据集市表。
这些视图需要花费大量时间来加载数据集市表,大约需要 5 小时。逻辑是截断加载,即每天截断整个数据库,并使用格式文件将数据从源系统文件加载到暂存区表中。
如何调整这些视图以加快加载过程,因为截断加载过程是故意编写的?
【问题讨论】:
-
那么,在运行进程之前,临时表是否被截断?临时表没有索引,对吧?
-
是的,每次从文件加载临时表时,它们都会被截断。我们确实在临时表上创建了主键索引。
-
在插入临时表之前删除 PK 和任何其他索引,如果需要,在过程结束时再次创建它们。插入有索引的表比插入没有索引的表需要更多的时间,而且它们会变得碎片化。如果您在没有索引的情况下插入它会更快,并且一旦您创建它们,它们将没有碎片,从而使它们更易于阅读。
标签: sql-server database tsql view query-tuning