This script permit executes the sp_updatestats in all databases at same time.
First I create the stored procedure above in an admin database, for sample I create one database with ADMIN name where I put all administration objects create for me. You can create this sp in exist db, if you want.
Now you can execute this sp in Query Analyzer or create a job to automate this operation. To execute this, call the next commands:
use ADMIN --or the name of database where you create this sp
exec SPUpdateStats
Good work
舉個例子吧:
分析你的查詢如何優化,索引是否正确需要正确的統計資料,資料一般要建表或加列時不會預設自動更新統計列,也就是說如果你的表的資料有1萬行,後來變成1百萬行的時候,如果沒有及時的更新統計那麼優化器就可能生正不正确的優化結果,造成不正确的索引建議。
是以,你可以建立維護計劃定期更新統計,用于之後優化器能生成正确的優化建議。
這是我個人的了解
CREATE PROCEDURE SPUpdateStats
AS
Set Nocount on
Declare db Cursor For
Select name from master.dbo.sysdatabases where name not in ('master','TempDB', 'msdb', 'model')
Declare @dbname varchar(60)
Declare @execmd nvarchar(150)
Open db
Fetch Next from db into @dbname
While @@Fetch_status=0
begin
if @dbname is null
Begin
Print 'null Value'
end
else
PRINT '###########################################################################'
PRINT 'Update Statistics in ' + @dbname
SELECT @execmd = 'USE ' + @dbname + ' EXEC sp_updatestats'
EXEC(@execmd)
PRINT ''
End
Close db
Deallocate db
GO
這裡涉及到一個存儲過程 sp_updatestats,對目前資料庫中所有使用者定義的表運作 UPDATE STATISTICS。這個可以從聯機手冊上看到。但是 UPDATE STATISTICS 有什麼用處可能很多人都不太清楚,下面是來之csdn的回答:
這是我個人的了解。