Update Statistics用法

Update Statistics语句的作用将创建的数据库表的有关统计信息更新到系统 sysmater的相关表中,以便查询优化器选择最佳的执行路径,当sysmaster库中没有相应的统计信息,或者统计不准确时,优化器会进行大量的顺序扫描,产生严重的性能问题

因此如果重新装载数据或者对表进行大量的更新操作后,及时使用 Update statistics
分三个级别:
update statistics low:
只更新表 字段 记录数 页数 和索引等基本信息 对字段的分布情况不做统计

语法说明:
(1)update statistics或update statisticslow,对当前数据库中所有表(包括系统表)及过程进行更新统计。
  (2)update statistics low for table,对当前数据库中所有表(包括临时表,但不包括系统表)进行更新统计。
  (3)update statistics low for table tablename,对指定的表所有字段进行更新统计。
  (4)update statistics low for table tablename(column-list),对指定表的指定字段进行更新统计。
  (5)如果不带drop distributions,原有字段分布情况依然保留;否则,原有字段分布情况将被删除。

updates tatistics medium:
除了更新表 字段记录数 页数 索引等基本信息,对字段的分布情况会采取抽样的方法来统计,与Update statistics相关会花费更多时间

update statistics high:
除了更新表 字段记录数 页数 索引等基本信息,对字段的分布情况会采取全部统计的方法

如何执行Update Statistics
  通常执行update statistics的方法是:
  
  1 对表中不带索引的字段执行update statistics medium,每个表执行一次。一般情况下,缺省参数就足够了。对于特别大的表(执行update statistics时,通常把超过26570条记录的表定义为特别大的表),可以带参数resolution1.00.99。
  2 对表中带有索引的字段执行update statistics high,每个字段执行一次。
  3 对表中带有复合索引的字段执行update statistics low,每个表执行一次。
  4 对每一个小表执行update statistic shigh。
注意事项:

1 数据库本身不会自动更新sysmaster库中有关statistics统计信息,只有执行update statistics语句后,才能得到更新。
  2 执行update statistics语句时,必须具有DBA权限或者为表的属主。
  3 由于update statistics通常为单线程运行,不能利用PDQ等并发功能,对于一个较大的数据库,执行update statistics语句一般需要几个小时。为提高效率,可以将update statistics分为多个shell程序同时执行,并充分考虑数据空间分布情况,在并发执行时减少磁盘读写的冲突。
  4 执行update statistics语句会占用一些临时空间,当临时空间不够时,数据库将提示错误。您可以通过设置DBUPSPACE环境变量,使update statistics在遇到临时空间不够时分步来执行排序统计。

时间: 2024-12-13 15:44:08

Update Statistics用法的相关文章

【译】SQLskills SQL101:Trace Flags、ERRORLOG、Update Statistics

最近阅读SQLskills SQL101,将Erin Stellato部分稍作整理.仅提取自己感兴趣的知识点,详细内容请阅读原文. 一.Trace Flags推荐开启三个跟踪标记1118.3023.3226跟踪标记1118(适用2016之前版本),避开对SGAM页的使用,在统一区分配新建对象的空间.跟踪标记3023(适用2014之前版本),在默认情况下对实例上进行的所有备份启用CHECKSUM选项.跟踪标记3226,成功备份信息不再写入SQL Server ERRORLOG二.The SQL S

sql语句update的用法

UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'

update 高级用法

1.关联多表进去UPDATE update命令里对多个数据表里的相关记录做出修改.下面的这条命令将对数据表table1里的一些数据记录的columnA字段做出修改,新数据来自table2.columnB数据列,这两个字段之间的关系通过两个数据表里的同名ID字段tableID建立关系. Sql代码   update table1,table2 set table1.columnA = table2.columnB where table1.tableID = table2.tableID   2.

on duplicate key update 的用法说明(解决批量操作数据,有就更新,没有就新增)mybatis批量操作数据更新和添加

项目用的ORM框架是用springdatajpa来做的,有些批量数据操作的话,用这个效率太低,所以用mybatis自己写sql优化一下. 一般情况,我们肯定是先查询,有就修改,没有就添加,这样的话,单个操作还好,如果是大量数据的话,每次都需要先查后改(如果用springdatajpa的话,添加之前还得查一遍),太消耗资源了. 那么mysql有没有解决的办法呢?当然是有的,我查了一些资料,有两种办法,一种是使用使用replace into ,还有一种是on duplicate key update

Django model update的各种用法介绍

Django开发过程中对表(model)的增删改查是最常用的功能之一,本文介绍笔者在使用model update过程中遇到的那些事 [ 运行环境:Django2.0 ] model update常规用法 假如我们的表结构是这样的 class User(models.Model): username = models.CharField(max_length=255, unique=True, verbose_name='用户名') is_active = models.BooleanField(

sql事务(Transaction)用法介绍及回滚实例

事务是将一系列操作作为一个单元执行,要么成功,要么失败,回滚到最初状态.在事务处理术语中,事务要么提交,要么中止.若要提交事务,所有参与者都必须保证对数据的任何更改是永久的.不论系统崩溃或是发生其他无法预料的事件,更改都必须是持久的.只要有一个参与者无法做出此保证,整个事务就会失败.事务范围内的所有数据更改将回滚到特定设置点. Begin TRANSACTION 语句1; If @@error<>0 Goto error 语句2; If @@error<>0 Goto error

sql事务(Transaction)用法介绍及回滚实例_转

sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性 当对多个表进行更新的时候,某条执行失败.为了保持数据的完整性,需要使用事务回滚. 显示设置事务 代码如下 begin try   www.2cto.com begin transaction insert into shi

SQL 系统存储过程用法整理

---------------------------------------------------------------------------------- -- Author : htl258(Tony) -- Date   : 2010-07-06 23:13:19 -- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) --          Jul  9 2008 14:43:34 --    

SQL中Truncate的用法

转自:http://www.studyofnet.com/news/555.html 本文导读:删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作.TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似:但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少.下面介绍SQL中Truncate的用法 当你不再需要该表时, 用 drop:当你仍要保留该表,但要删除所有记