【发布时间】:2009-08-20 17:53:00
【问题描述】:
我正在使用 SSIS 在我的仓库中加载表格。由于我的 SSIS 很慢,因此在表上构建索引似乎是个好主意。
这个仓库没有主键(因此也有外键)、索引(集群或其他)、约束。换句话说,它是 100% 无效率的。
我们将根据使用情况放置索引 - 通过分析新查询和当前查询性能。
因此,我认为我应该使用闪亮的新数据库引擎优化顾问,而不是用我们老式的汗水和咕噜咕噜的方式来实际阅读 SQL 语句和执行计划。
我在我的 SSIS 包中关闭了 SQL 日志记录并运行了“调整”跟踪,将其保存到表中并在调整顾问中分析了输出。大多数查找都是这样完成的:
exec sp_executesql N'SELECT [Active], [CompanyID], [CompanyName], [CompanyShortName], [CompanyTypeID], [HierarchyNodeID] FROM [dbo].[Company] WHERE ([CompanyID]=@P1) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)',N'@P1 int',1
exec sp_executesql N'SELECT [Active], [CompanyID], [CompanyName], [CompanyShortName], [CompanyTypeID], [HierarchyNodeID] FROM [dbo].[Company] WHERE ([CompanyID]=@P1) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)',N'@P1 int',2
exec sp_executesql N'SELECT [Active], [CompanyID], [CompanyName], [CompanyShortName], [CompanyTypeID], [HierarchyNodeID] FROM [dbo].[Company] WHERE ([CompanyID]=@P1) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)',N'@P1 int',3
exec sp_executesql N'SELECT [Active], [CompanyID], [CompanyName], [CompanyShortName], [CompanyTypeID], [HierarchyNodeID] FROM [dbo].[Company] WHERE ([CompanyID]=@P1) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)',N'@P1 int',4
在分析时,这些语句的原因是“事件未引用任何表”。嗯?它没有看到 FROM dbo.Company 吗??!!这是怎么回事?
所以,我有多个问题:
- 如何让它捕获在我的跟踪中执行的实际语句,而不是批量提交的语句?
- 对于针对 SQL Server 2008 运行的 SSIS 包的性能优化,是否有任何最佳实践可供遵循?
【问题讨论】:
标签: sql sql-server ssis indexing performance