2009-08-20 68 views
0

我使用SSIS在我的倉庫中加載表。由於我的SSIS速度很慢,因此在表格上建立索引似乎是個好主意。SSIS任務的索引調整

此倉庫上沒有主鍵(因此是外鍵),索引(聚集或其他),約束。換句話說,它是100%免費的效率。

我們將根據使用情況設置索引 - 通過分析新的查詢和當前的查詢性能。

因此,我認爲我不會使用我們陳舊的汗水和實際讀取SQL語句和執行計劃的煩人方式,而是使用閃亮的新數據庫引擎優化顧問來使用它。

我在SSIS包中關閉了SQL註銷,並運行「調整」跟蹤,將其保存到表中並分析Tuning Advisor中的輸出。大多數查找的都是因爲:

exec sp_executesql N'SELECT [Active], [CompanyID], [CompanyName], [CompanyShortName], [CompanyTypeID], [HierarchyNodeID] FROM [dbo].[Company] WHERE ([CompanyID][email protected]) 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][email protected]) 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][email protected]) 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][email protected]) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)',N'@P1 int',4

和分析時,這些語句有 「事件不引用任何表」 的原因。咦?它沒有看到FROM dbo.Company ?? !!這裏發生了什麼?

所以,我有多個問題:

  1. 我如何得到它來捕捉在我的跟蹤執行實際的說法,不是在一個批處理提交?
  2. 是否有任何最佳實踐要跟蹤調整與SQL Server 2008運行的SSIS包相關的性能?

回答

1

倉庫總是有索引,至少在我的宇宙中:-)。 ETL的加載通常很容易進行索引,因爲查詢是非常基本的。 (您只需索引業務密鑰列以便快速查找倉庫密鑰。)

E.G. 「WHERE([CompanyID] = @ P1)AND([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)」看起來可能是CompanyID是一個查找鍵並需要一個索引。

你在示例中看到的是參數化SQL(這很好)。你有沒有考慮過使用缺少的索引DMV而不是調整嚮導?我個人喜歡這種方法,因爲它簡單直接。只是不要立即採取所有建議的指標;需要做出判斷才能確定哪些實施起來是非常明智的。

此外,如果您的負載較慢,可能是由於其他原因。外鍵在玩嗎?您是否批量加載(這很棘手,因爲您可以向服務器請求批量插入,並且可以根據目標表中的聚簇索引和非聚簇索引的詳細信息忽略您的請求)

+0

根據您的輸入編輯的問題。我沒有使用DMV。我沒有FK或PK - 只是倉庫中的指數。沒有檢查約束 - 只有默認約束。你有什麼資源可以學習DMV嗎? – 2009-08-20 20:10:53

+0

http://blogs.msdn.com/bartd/archive/2007/07/19/are-you-using-sql-s-missing-index-dmvs.aspx – onupdatecascade 2009-08-20 23:19:34