2012-09-04 60 views
0

我很難理解您可以通過SQL Server Management Studio獲得的執行計劃中的提示。下面是一個例子(簡化,但被包括一切)如何閱讀SQL Server Management Studio執行計劃中的提示

enter image description here

索引查找(非聚集)

謂詞

探針([Bitmap1047],ScheduleId)

對象

IX_Date

輸出列表

ScheduleId日期

尋求謂詞

日期> = '2012-01-02' 日期<('2012-05- 14')

  • ScheduleId是一個基於guid的外鍵。
  • IX_Date是日期索引,ScheduleId和涉及工作時間

要我上面看起來不錯。索引尋求應該是好的。它遇到了一個相關的索引。但是,這個項目佔用了很大一部分執行時間(否則我不會理解它)。這令我感到困惑,我懷疑這是因爲在閱讀本書時,有一些基本的東西我不明白。

任何人都可以爲我照亮一些燈光嗎?

+0

什麼是索引搜索返回的「實際行數」和「估計行大小」? – Narthring

+0

我更新了問題以包含此信息。 –

+0

你可以發佈完整的查詢計劃嗎? – Justin

回答

0

我從您提供的數據中沒有看到任何看起來很奇怪的東西。非聚集索引查找的成本在這個計劃中只有12%,所以除非有很多其他操作花費的時間很少,並且這個操作相對較大,否則對我來說看起來沒問題。

我認爲執行成本可能看起來很高,因爲它正在執行50萬行以上的非聚集索引查找。

+0

這個操作有5次,每次需要12%,所以這就是爲什麼我把它看作主要的罪魁禍首。我可以阻止它在索引之間進行索引搜索嗎? –

+0

這聽起來像是一個問題。如果在五種情況中的每一種情況下查找都相同,則可能以不同方式編寫查詢,因此查找只執行一次。是否有可能發佈查詢本身? – Narthring

+0

該查詢是從實體框架自動生成的。我知道我可以重寫查詢,但由於我不能輕易做到這一點,這就是爲什麼我使用這張票據時,試圖專注於閱讀執行計劃並基於我已有的優化進行優化。 –

相關問題