创建统计信息来优化查询性能

来源:互联网 发布:21天学通c语言第7版 编辑:程序博客网 时间:2024/05/16 07:42

今天使用sqlserver2008的“数据库引擎优化顾问”在对一个sql进行优化时, 索引建议里给出如下建议目标:
--CREATE STATISTICS
CREATE STATISTICS [_dta_stat_1758629308_16_10_1] ON [dbo].[PrmOrderPromiseTime]([DistributionId], [StoreId], [OrderId])

-- 包含索引
CREATE NONCLUSTERED INDEX [_dta_index_PrmOrderSiteActualTime_6_1582628681__K1_2_7] ON [dbo].[PrmOrderSiteActualTime]
(
 [OrderId] ASC
)
INCLUDE ( [SiteId],
[ActualSiteId]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]

尤其是create statistics,粗略地了解了下。 如下知识来自csdn:

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

 

具体可在msdn上寻求帮助http://msdn.microsoft.com/zh-cn/library/ms188038(SQL.105).aspx、http://msdn.microsoft.com/zh-cn/library/bb510669.aspx

sql方面要学的东西太多了,以后还需耐心的继续学习。

0 0
原创粉丝点击