【2.以下是更新统计信息】

 DECLARE UpdateStatisticsTables CURSOR READ_ONLY FORSELECT sst.name,Schema_name(sst.schema_id)FROM   sys.tables sstWHERE  sst.TYPE = 'U'DECLARE @name   VARCHAR(80),@schema VARCHAR(40)OPEN UpdateStatisticsTablesFETCH NEXT FROM UpdateStatisticsTables INTO @name, @schemaWHILE ( @@FETCH_STATUS <> -1 )BEGINIF ( @@FETCH_STATUS <> -2 )BEGINDECLARE @sql NVARCHAR(1024)SET @sql='UPDATE STATISTICS ' + Quotename(@schema)+'.' + Quotename(@name)EXEC Sp_executesql @sqlENDFETCH NEXT FROM UpdateStatisticsTables INTO @name, @schemaENDCLOSE UpdateStatisticsTablesDEALLOCATE UpdateStatisticsTablesGO

UPDATE STATISTICS tblCompany  -- 表名
USE tblCompany; -- 数据库名
EXEC sp_updatestats -- 更新所有表统计信息

-------------------------------------------------

【1.以下是索引重建】

摘自: http://www.cnblogs.com/shijun/archive/2012/04/21/2461737.html

项目升级数据库由SQL2000升级到2008R2,今天对数据库表进行碎片扫描,发现有些表碎片较大,于是决定重建索引,联机帮助是最好的老师,将相关脚本摘录备后查。

参考sys.dm_db_index_physical_stats

SELECTOBJECT_NAME(object_id) as objectname,object_id AS objectid,index_id AS indexid,partition_number AS partitionnum,avg_fragmentation_in_percent AS fra
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, 'LIMITED')
WHERE avg_fragmentation_in_percent > 10.0 AND index_id > 0;

使用脚本中的 sys.dm_db_index_physical_stats 重新生成或重新组织索引 (来源于联机帮助

SET NOCOUNT ON;
DECLARE @objectid int;
DECLARE @indexid int;
DECLARE @partitioncount bigint;
DECLARE @schemaname nvarchar(130);
DECLARE @objectname nvarchar(130);
DECLARE @indexname nvarchar(130);
DECLARE @partitionnum bigint;
DECLARE @partitions bigint;
DECLARE @frag float;
DECLARE @command nvarchar(4000);
-- Conditionally select tables and indexes from the sys.dm_db_index_physical_stats function
-- and convert object and index IDs to names.
SELECTobject_id AS objectid,index_id AS indexid,partition_number AS partitionnum,avg_fragmentation_in_percent AS frag
INTO #work_to_do
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, 'LIMITED')
WHERE avg_fragmentation_in_percent > 10.0 AND index_id > 0;-- Declare the cursor for the list of partitions to be processed.
DECLARE partitions CURSOR FOR SELECT * FROM #work_to_do;-- Open the cursor.
OPEN partitions;-- Loop through the partitions.
WHILE (1=1)BEGIN;FETCH NEXTFROM partitionsINTO @objectid, @indexid, @partitionnum, @frag;IF @@FETCH_STATUS < 0 BREAK;SELECT @objectname = QUOTENAME(o.name), @schemaname = QUOTENAME(s.name)FROM sys.objects AS oJOIN sys.schemas as s ON s.schema_id = o.schema_idWHERE o.object_id = @objectid;SELECT @indexname = QUOTENAME(name)FROM sys.indexesWHERE  object_id = @objectid AND index_id = @indexid;SELECT @partitioncount = count (*)FROM sys.partitionsWHERE object_id = @objectid AND index_id = @indexid;-- 30 is an arbitrary decision point at which to switch between reorganizing and rebuilding.IF @frag < 30.0SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REORGANIZE';IF @frag >= 30.0SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD';IF @partitioncount > 1SET @command = @command + N' PARTITION=' + CAST(@partitionnum AS nvarchar(10));EXEC (@command);PRINT N'Executed: ' + @command;END;-- Close and deallocate the cursor.
CLOSE partitions;
DEALLOCATE partitions;-- Drop the temporary table.
DROP TABLE #work_to_do;
GO

转载于:https://www.cnblogs.com/tohen/p/7511651.html

SQL2008R2的 遍历所有表更新统计信息 和 索引重建相关推荐

  1. mysql 更新统计信息_MySQL5.7统计信息更新的相关参数解释和测试

    MySQL版本:5.7.21 统计信息相关参数如下: mysql> show global variables like '%stats%'; +------------------------ ...

  2. SQL Server 数据库表的统计信息的更新

    最近在调整基础信息数据时,新增了几个客户类型,意想不到的事情发生了,在使用新增的客户类型作为 查询条件查询报表时,居然出现了超时的现象,但是用其他以前的客户类型查询就没有问题,用一个以前增加的 客户类 ...

  3. ORACLE索引失效,更新统计信息

    有时候建立索引的时候不走索引,排除了字段数据问题和sql写法问题,索引失效的问题之外,还得考虑是统计信息过旧,得重新收集.查看表的统计信息,看 user_index 的last_analyze(索引) ...

  4. SQL Server 自动更新统计信息的基本算法

    最初接触SQL Server的时候认为SQLServer数据更改的同时就会相应的更新统计信息,其实SQL Server不是这样做的.基于性能考虑,SQL Server使用下面的算法更新统计信息. 自动 ...

  5. SQL Server统计信息以及如何在SQL中执行更新统计信息

    This article gives a walk-through of SQL Server Statistics and different methods to perform SQL Serv ...

  6. 使用数据库维护计划SQL Server更新统计信息

    This article explores SQL Server Update Statistics using the database maintenance plan. 本文探索使用数据库维护计 ...

  7. 自动更新统计信息的阀值——人为更新统计信息的重要性

    经过一系列的Insert/Update/Delete后,统计信息可能不会是最新.如果SQL Server查询优化器在表里需要指定列的统计信息,自上次统计信息创建或更新后经历了实质的更新活动,SQL S ...

  8. 藏在表分区统计信息背后的小秘密

    藏在表分区统计信息背后的小秘密 藏在表分区统计信息背后的小秘密 原创 2017-09-19 曾令军 数据和云 云和恩墨技术专家,8年数据库运维经验.思维敏捷,擅长于数据库开发.解决棘手的数据库故障和性 ...

  9. oracle更新统计信息执行计划,为准确生成执行计划更新统计信息-analyze与dbms_stats...

    如果我们想让CBO利用合理利用数据的统计信息,正确判断执行任何SQL查询时的最快途径,需要及时的使用analyze命令或者dbms_stats重新统计数据的统计信息. 例如索引跳跃式扫描(INDEX ...

最新文章

  1. 到外国的网站写英语留言
  2. linux 更新yum源 改成阿里云源
  3. Python爬虫QQ说说并分析朋友状况
  4. 独角兽公司 Sprinklr 获 1.05 亿美元 F 轮融资,估值 18 亿美元
  5. redis学习(一)
  6. ThinkPHP 数据库操作之数据表模型和基础模型 ( Model )
  7. Python中利用parse_args与namespace来简化函数传参
  8. 前端居中模板(常用HTML模板)
  9. python反向切片_Python-关于反向切片的小问题
  10. 学习Azure Functions:在Visual Studio 2017中创建Azure Functions
  11. 中挪动正请求第三方支出牌照竖立支出公司
  12. OJDBC版本区别nbsp;[ojdbc14.jar…
  13. 市场项目交接文档初稿
  14. 用计算机证明有限,四色定理-四色定理已利用计算机证明,但能否给出简洁的证明方法吗 爱问知识人...
  15. 山东省软件设计大赛参赛经验
  16. 5G技术演进与核心技术一(笔记)
  17. NVIDIA Tesla GPU系列P4、T4、P40以及V100显卡性能的对比
  18. 【2022】超详细的JAVA JDK配置和IDEA安装教程(Windows 版)
  19. 条码查询接口,商品条码和药品条码查询
  20. 通过WEB链接打开QQ窗体,实现与陌生人交谈的目的

热门文章

  1. 【电脑使用经验】怎么查看无线网络中电脑的IP地址?
  2. 万网独享主机Apache为Ecshop商城添加404页面详解
  3. 《从零开始学习ASP.NET MVC 1.0》-开天辟地入门篇
  4. jQuery中this与$(this)的区别总结
  5. 小程序 --- Tab组件的封装
  6. javascript --- [jsonp] script标签的妙用(绕过同源限制)
  7. koa --- nunjucks
  8. Java Web Servlet
  9. 정규식 문법 정리.초급
  10. Difference: throw or throw ex?