创建统计信息来优化查询性能
2011-11-30 10:34
381 查看
今天使用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方面要学的东西太多了,以后还需耐心的继续学习。
--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方面要学的东西太多了,以后还需耐心的继续学习。
相关文章推荐
- 创建统计信息来优化查询性能
- 通过手动创建统计信息优化sql查询性能案例
- 通过手动创建统计信息优化sql查询性能案例
- 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项
- 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项
- 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项 (转载)
- 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项
- SQL优化一例,由于动态性能视图统计信息不准确引起的查询缓慢
- 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项
- 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项
- SQL Server查询性能优化——创建索引原则(二)
- SQL Server 数据库统计信息更新对性能优化的切身体会
- Oracle性能优化之oracle里表、索引、列的统计信息
- Sql Server查询性能优化之创建合理的索引
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC SHOW_STATISTICSDBCC SHOW_STATISTICS 显示表或索引视图的当前查询优化统计信息
- Oracle性能-查询统计信息的SQL语句
- SQL Server 查询性能优化——创建索引原则(一)
- Oracle性能优化之Oracle里的统计信息
- Sql Server查询性能优化之创建合理的索引(上篇)
- ORACLE 性能优化-手工修改统计信息(不得已为之)详解