Sql-Server
可以定期對所有視圖執行 sp_refreshview 嗎?
Microsoft SQL Server 有一個名為sp_refreshview的系統儲存過程,它更新傳入的視圖的元數據。
在我的所有視圖上定期執行此程序有什麼缺點嗎?(比如性能統計受到影響等?)
我可以每晚、每小時、每幾分鐘執行一次嗎?
如果這樣做沒有任何影響,這似乎是確保我的視圖元數據在他們引用的基礎實體可能發生變化時保持最新的好方法。
他們引用的基礎實體有可能發生變化
這就是問題所在,你應該從源頭上解決它。
如果您在數據庫中更新對象的頻率足夠高,以至於您必須自動執行頻繁的元數據更正,那麼可能有機會獲得更好的流程。
並且您不應該在不更新引用它們的視圖的情況下更新表。因此,視圖應該成為您的架構修改工作流程的一部分。
您可以
WITH SCHEMABINDING
在視圖上使用,這將明確強制您在不故意刪除模式綁定的情況下不能修改引用的對象。(作為額外的獎勵,您的視圖不能使用SELECT *
,這可能是這裡問題的一部分)。我在下面的文章中寫過這個: