我有一個錯誤的統計數據和零散索引數據庫上的一個複雜的查詢。我感到困惑的是,當我檢查一個實際的查詢計劃時,我從一個具有23 K行的表的表掃描得到54 M行。查詢計劃的更深層次在於本表與其自身相結合(23 K中只有260 K行)。這怎麼可能?表掃描如何返回比表中的行更多的行?
運行一些其他查詢或重建索引和統計數據使得這消失,我只是想了解爲什麼會發生這種情況。
我已經使用SQL 2005和SQL 2008 R2對同一數據庫進行了還原。
更新:是的,這是一個實際的計劃。行數是20039(不是上面提到的23 K)。這是最右邊的節點之一。
嗯......表格被多次掃描? – 2011-05-26 19:44:06
由於很好的理由,該表在查詢中自加入。在查詢計劃中,它會被掃描兩次(上面提到的表掃描),並且還會在表格中進行三次索引查找。 – PavelR 2011-05-26 19:51:09
這是估計的執行計劃,還是實際執行計劃? – Ryk 2011-05-26 23:14:31