我正在從一個麻煩的查詢看執行計劃。SQL Server:桌面掃描如何在一張小桌子上如此昂貴?
我可以看到,計劃的45%被佔用,對具有七(7)行數據的表進行表掃描。
我即將把一個聚簇索引覆蓋在我的查詢中有7行的表上的列,它感覺...錯了。鑑於桌子太小,我的查詢這部分怎麼能佔據這麼多的計劃呢?
我在讀here,它覺得這可能只是因爲非連續的數據 - 在所討論的表中根本沒有索引。總的來說,雖然我們的數據庫很大(7GB)並且很忙。
我很想知道別人怎麼想 - 謝謝!
編輯:
查詢運行非常頻繁,並參與了僵局(和選擇作爲受害者)。目前運行需要300ms到500ms,但數據庫更忙時需要更長的時間。
查詢:
select l.team1Score, l.team2Score, ls.team1ExternalID, ls.team2ExternalID, et.eventCategoryID, e.eventID, ls.statusCode
from livescoretracking l(nolock)
inner join liveScores ls (nolock) on l.liveScoreID = ls.liveScoreID
inner join db1.dbo.events e on e.gameid = ls.gameid
inner join db1.dbo.eventtype et (nolock) on e.eventTypeID = et.eventTypeID
inner join eventCategoryPayTypeMappings ecb (nolock) on (et.eventCategoryID = ecb.eventCategoryID and e.payTypeID = ecb.payTypeID and ecb.mainEvent = 1)
where ls.gameID = 286711 order by l.dateinserted
的問題表是eventCategoryPayTypeMappings表 - 謝謝!
你能發表查詢嗎? – bleeeah 2010-08-09 14:57:48
如果查詢運行得很快,那麼45%不是問題。查詢需要多長時間? – RedFilter 2010-08-09 14:59:26
你會寫信給你嗎?如果你這樣做,多少錢? 你有像柱子一樣的大柱嗎? – 2010-08-09 15:17:21