3
我有一個基本上連接一些表的視圖,並且視圖上沒有索引。當我查看視圖(與另一個表連接)時,性能很差,大概需要10分鐘。當我從視圖中提取基表並加入「另一個表」時,大約需要20秒。使用視圖或使用基表的邏輯完全相同。我查了一下,他們得到了不同的執行計劃。任何想法爲何會發生這種情況?通過查看SQL Server查詢並通過基表查詢得到不同的執行計劃
謝謝。
我有一個基本上連接一些表的視圖,並且視圖上沒有索引。當我查看視圖(與另一個表連接)時,性能很差,大概需要10分鐘。當我從視圖中提取基表並加入「另一個表」時,大約需要20秒。使用視圖或使用基表的邏輯完全相同。我查了一下,他們得到了不同的執行計劃。任何想法爲何會發生這種情況?通過查看SQL Server查詢並通過基表查詢得到不同的執行計劃
謝謝。
SQL Server可能正在使用緩存的執行計劃(基於您第一次從視圖中選擇了某些內容,該表可能已經增大並且不再使用最有效的計劃,因此性能較低)。
你可以使用刷新視圖:
sp_refreshview [ @viewname = ] 'viewname'
或完全重建的看法,並再次運行它來生成新的執行計劃,不過你可能以後遇到同樣的性能問題。本文介紹了可以進行更詳細的情況發生:
誰投下來這個答案?我記得昨晚有2票贊成,現在只有一票。 –
謝謝達倫,根據你的回答,我解決了我的問題! –
@Yousui很高興聽到你有它排序:-) –