该命令在一张表或者索引了的视图上更新查询优化统计数字信息. 默认情况下, 查询优化器已经更新了必要的用来提高查询计划的统计信息; 在某些情况下, 你可以通过使用UPDATE STATISTICS 命令或者存储过程sp_updatestats 来比默认更频繁地更新统计信息来提高查询效率.

更新统计信息能确保查询能以最新的统计信息来编译. 然而, 更新统计信息会引起查询的重新编译. 我们建议不要过于频繁地更新统计信息, 因为这里有一个在提高查询计划和用来重新编译查询的权衡. 具体的权衡要看你的应用程序而定.

关于统计信息的更多信息, 还有何时使用UPDATE STATISTICS, 请参考Using Statistics to Improve Query Performance.

注意: 

何时使用UPDATE STATISTICS

参考Using Statistics to Improve Query Performance.

使用 sp_updatestats更新所有的统计信息

更多信息关于如何更新所有数据库中的用户定义的表和系统内部表, 请参考存储过程sp_updatestats (Transact-SQL)

举例, 下面的命令调用sp_updatestats 存储过程来更新数据库里所有的统计信息.

EXEC sp_updatestats

确定统计信息最后更新的时间
要确定统计信息最后更新的时间, 请使用STATS_DATE 函数.

权限

如要运行这个命令, 你需要在表或视图上有ALTER权限.

例子

A. Update all statistics on a table

The following example updates the statistics for all indexes on the SalesOrderDetail table.

USE AdventureWorks;
GO
UPDATE STATISTICS Sales.SalesOrderDetail;
GO

B. Update the statistics for an index

The following example updates the statistics for the AK_SalesOrderDetail_rowguid index of the SalesOrderDetail table.

USE AdventureWorks;
GO
UPDATE STATISTICS Sales.SalesOrderDetail AK_SalesOrderDetail_rowguid;
GO

C. Update statistics by using 50 percent sampling

The following example creates and then updates the statistics for the Name and ProductNumber columns in the Product table.

USE AdventureWorks;
GO
CREATE STATISTICS Products
ON Production.Product ([Name], ProductNumber)
WITH SAMPLE 50 PERCENT
-- Time passes. The UPDATE STATISTICS statement is then executed.
UPDATE STATISTICS Production.Product(Products)
WITH SAMPLE 50 PERCENT;
D. Update statistics by using FULLSCAN and NORECOMPUTE

The following example updates the Products statistics in the Product table, forces a full scan of all rows in the Product table, and turns off automatic statistics for the Products statistics.

USE AdventureWorks;
GO
UPDATE STATISTICS Production.Product(Products)
WITH FULLSCAN, NORECOMPUTE;
GO

译自:

UPDATE STATISTICS (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms187348.aspx

1.STATISTICS是一个表中某几个列的统计信息,如一个表是全校学生某次考试的分数,score列的类型是int,取值范围是0到100的整数,那么statistc就是每个分数分别有多少人。在一个特定的查询中,使用索引可能加快速度,也可能减慢速度,所以SQL server要事先对使用索引的效果做一个预测,预测的依据就是STATISTICS。
2.默认情况下,表或索引更改了,统计会相应地自动更新,以保持统计是最新的。但是可以在数据库选项中关闭这个自动更新的功能,提高数据表的更新速度。但需要定期手动更新统计。因为过期的统计信息会对是否使用索引的判断带来误判。没发现SQL2000和SQL2005的统计有什么区别。
3.index要依赖正确的STATISTICS才能发挥作用。而你的SQL2005优化工具对缺乏STATISTIC的列自动产生了创建语句。

Create STATISTICS,UPDATE STATISTICS的更多相关文章

  1. Update Statistics用法

    Update Statistics语句的作用将创建的数据库表的有关统计信息更新到系统 sysmater的相关表中,以便查询优化器选择最佳的执行路径,当sysmaster库中没有相应的统计信息,或者统计 ...

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

    最近阅读SQLskills SQL101,将Erin Stellato部分稍作整理.仅提取自己感兴趣的知识点,详细内容请阅读原文. 一.Trace Flags推荐开启三个跟踪标记1118.3023.3 ...

  3. SQL Server ->> SQL Server 2016功能改进之 -- Update Statistics

    1) 以前SQL Server更新一张表/索引的间隔是固定的,创建时更新一次,到了500行时更新第二次,接下来就是呈百分比式的间隔去更新,距离数据修改量达到表的行数量的的20%再次触发更新.但是这样的 ...

  4. SQLServer之创建INSTEAD OF INSERT,UPDATE,DELETE触发器

    INSTEAD OF触发器工作原理 INSTEAD OF表示并不执行其所定义的操作INSERT,UPDATE ,DELETE,而仅是执行触发器本身,即当对表进行INSERT.UPDATE 或 DELE ...

  5. Maven update project...后jdk变成1.5,update project后jdk版本改变

    Maven update project...后jdk变成1.5,update project后jdk版本改变 ============================== 蕃薯耀 2018年3月14 ...

  6. unity3D脚本中,update ,fixupdate 和lateupdate的区别

    1.MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用. 2.MonoBehaviour.FixedUpdate 固定更新 当MonoBe ...

  7. Invalidate,Update与Refresh的区别

    在做Windows Forms开发的时候,免不了需要手动刷新窗口,以重绘所需更改的控件,或其它什么的.当出现这类需求时,你有三个选择,使用Invalidate,Update或者Refresh方法. I ...

  8. Repository模式中,Update总是失败及其解析

    在Repository模式中,我的Update方法总是无法更新实体,这个非常郁闷,Update方法如下: 1: public virtual void Update(T entity) 2: { 3: ...

  9. Map Columns From Different Tables and Create Insert and Update Statements in Oracle Forms

    This is one of my most needed tool to create Insert and Update statements using select or alias from ...

随机推荐

  1. hadoop 中对Vlong 和 Vint的压缩方法

    hadoop 中对java的基本类型进行了writeable的封装,并且所有这些writeable都是继承自WritableComparable的,都是可比较的:并且,它们都有对应的get() 和 s ...

  2. vijos 1776 关押罪犯

    带权并查集+贪心. #include<iostream> #include<cstdio> #include<cstring> #include<algori ...

  3. Mac 将mysql路径加入环境变量

    1.打开终端,输入: cd ~ 会进入~文件夹 2.然后输入:touch .bash_profile 回车执行后, 2.再输入:open -e .bash_profile 会在TextEdit中打开这 ...

  4. Android Priority Job Queue (Job Manager)(一)

     Android Priority Job Queue (Job Manager)(一) 一.为什么要引入Android Priority Job Queue (Job Manager)?如今的A ...

  5. Why does my ListView scroll to the top when navigating backwards?

    I’ve seen a few people asking this question. They have a page which contains a ListView and when an ...

  6. SQL中使用WITH AS提高性能-使用公用表表达式(CTE)简化嵌套SQL

    转:http://wudataoge.blog.163.com/blog/static/80073886200961652022389/ 一.WITH AS的含义     WITH AS短语,也叫做子 ...

  7. 解决两台虚拟机互ping可通,但connect失败

    问题描述: 在UNP一书中实例中,采用两台不同的虚拟机.即一台虚拟机作为服务端,另外一台虚拟机作为客户端. 现象: 两台电脑各自互ping可通 客户端访问local可行 客户机访问服务端报错:No r ...

  8. Linux服务器使用命令操作MySQL插入数据乱码问题

    服务器上使用MySQL命令方式进行插入数据时,很多时候会遇到插入数据乱码问题,导出一个sql执行文件,再倒入到unbutn中,结果出现乱码,折腾7-8分钟, 解决方式 在导出mysql sql执行文件 ...

  9. xampp访问403 Access forbidden 解决办法

    本地可以访问,换一台机子就不行了,是因为权限没有开启,安装目录xampp\apache\conf\extra内有个httpd-xampp.conf文件,打开, 最后一段是 # # New XAMPP ...

  10. CentOS6编译装载nbd模块

    今天突然发现CentOS系统没有nbd模块,只能重新装下,下面记录下整个编译过程: 系统:CentOS6.5 内核:2.6.32-431.el6.x86_64 [root@localhost ~]# ...