登录
注册
论坛
空间
帮助
会员
界面
简洁版本
在线
微软BI开拓者
数据库专区
SQL Server管理
发现需要统计更新的表
数据库专区
SQL Server管理
SQL Server开发
SQL Azure云数据库
商业智能综述区
BI探讨
BI项目管理
数据仓库专区
ETCL设计
SSIS使用与管理
SSIS二次开发
多维分析专区
多维建模
SSAS配置管理
MDX
SSAS二次开发
数据挖掘专区
数据挖掘建模
DMX
DM应用开发
前端应用专区
SharePoint Excel PowerPivot
SQL Server Reporting Services
PerformancePoint及其相关产品
其他
站务
灌水区
培训相关
求职招聘区
1
/ 1 页
1
跳转
页
查看:
3153
[技术文档] 发现需要统计更新的表
本主题由 管理员 Administrator 于 8/12/2007 10:36:12 PM 执行 设置精华/取消 操作
拓狼
个人空间
组别:
管理员
性别:
来自:
北京 海淀
积分:
1121
帖子:
619
注册:
2007-05-23
2007-05-24 14:22
|
只看楼主
树型
|
收藏
|
小
中
大
1
发现需要统计更新的表
发现需要统计更新的表
--王成辉翻译整理,转贴请注明出自微软BI开拓者
www.windbi.com
--
原帖地址
索引和表统计在OLTP数据库里为了更好的性能扮演着重要的角色。基本上每周一次的统计维护是重要的,而且大量更新数据库表需要更加着重于统计和更新频率。而不是试图执行sp_updatestats?对于整个数据库而言,你可以选择那些需要大量更新和维护的表去进行更新。
下面的脚本(存储过程)用来获得哪些表被更新了,自最后一次更新以来多少行被更新的信息。脚本也产生脚本去在数据库上运行以更新那些统计过期的表的统计。
/*
在master数据库上运行下面的脚本产生存储过程。存储过程有两个输入参数@dbname和@option
@dbname-你要更新统计的数据库的名称
@option-输入参数I表示只列出信息,输入A表示产生进行统计更新的语句,将此语句复制到相应的数据库执行即可
Exec sp_dba_ShowMe_TableStats
'@dbname','@action'
示例1: EXEC sp_dba_ShowMe_TableStats 'pubs','I'
结果:
Table Name Index Name Rows Modified
newTitles newTitles 18
EMPSTAT_DIM EMPSTAT_DIM_idx1 1704364
PJR_Sales PJR_Sales 1704364
PJR_Sales PJR_Sales 704364
示例2: 用参数A执行存储过程将得到下面的结果
EXEC sp_dba_ShowMe_TableStats 'pubs','A'
Results
---------------------------------
UPDATE STATISTICS EMPSTAT_DIM GO
UPDATE STATISTICS newTitles GO
UPDATE STATISTICS PJR_Sales GO
*/
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE sp_dba_ShowMe_TableStats @dbname sysname=NULL, @option char (1) = NULL
AS
--- 翻译整理:王成辉
BEGIN
Declare @what char(1),
@qry varchar(2000)
set @what = @option
IF @what = 'I'
Begin
set @qry = ' Use ' + @dbName +' SELECT substring(o.name,1,50) AS [table name], substring(o.name,1,50) AS [Index Name], i.rowmodctr AS [Rows Modified]
FROM SYSOBJECTS o JOIN SYSINDEXES i
ON o.id = i.id
WHERE i.rowmodctr > 0 and o.xtype = ''U''
ORDER BY i.rowmodctr DESC'
exec (@qry)
End
ELSE IF @what = 'A'
Begin
Print space(10)+' Run the Update Statistics on the following Tables'
SET @qry = 'SET NOCOUNT ON'+char(13)+ 'Use ' + @dbName + ' SELECT Distinct ''UPDATE STATISTICS''+SPACE(1)+O.NAME+CHAR(13)+''GO'' FROM SYSOBJECTS O
JOIN SYSINDEXES i ON o.id = i.id
WHERE i.rowmodctr > 0 and o.xtype = ''U''
---ORDER BY O.NAME'
exec (@qry)
End
ELSE
Begin
Print space(10)+'Please pass in the right parameters : DBName and option "I" for Information or "A" Action"'
PRINT '-------------------------------------------------------------------------------------------------------------------------------------'
set @qry = ' Use ' + @dbName +' SELECT substring(o.name,1,50) AS [table name], substring(o.name,1,50) AS [Index Name], i.rowmodctr AS [Rows Modified]
FROM SYSOBJECTS o JOIN SYSINDEXES i
ON o.id = i.id
WHERE i.rowmodctr > 0 and o.xtype = ''U''
ORDER BY i.rowmodctr DESC'
exec (@qry)
End
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
虽有智慧,不如乘势;虽有鎡基,不如待时。
君子学以聚之,问以辨之,宽以居之,仁以行之。
独学而无友,则孤陋而寡闻。
发送短消息
查看公共资料
查找该会员全部帖子
UID:
6
精华:
81
威望:
172
金钱:
1220.95 元
ProSrv-:
100
状态:
离线
group4968@xiaoi.com
494887861
<<
上一主题
|
下一主题
>>
1
/ 1 页
1
跳转
页
论坛跳转...
数据库专区
SQL Server管理
SQL Server开发
SQL Azure云数据库
商业智能综述区
BI探讨
BI项目管理
数据仓库专区
ETCL设计
SSIS使用与管理
SSIS二次开发
多维分析专区
多维建模
SSAS配置管理
MDX
SSAS二次开发
数据挖掘专区
数据挖掘建模
DMX
DM应用开发
前端应用专区
SharePoint Excel PowerPivot
SQL Server Reporting Services
PerformancePoint及其相关产品
其他
站务
灌水区
培训相关
求职招聘区
内务
服务测试区
我的主题
我的帖子
我的精华
我的空间
帖子标题
空间日志
相册标题
作 者
我的主题
我的帖子
我的附件
我的精华
我的空间