SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第三篇)
2012-12-29 17:02
267 查看
SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第三篇)
最近真的没有什么精力写文章,天天加班,为了完成这个系列,硬着头皮上了再看这篇文章之前请大家先看我之前写的第一篇和第二篇
第一篇:SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第一篇)
第二篇:SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第二篇)
1、统计信息的含义与作用
为了以尽可能快的速度完成语句,光有索引是不够的。对于同一句话,SQLSERVER有很多种方法来完成他。
有些方法适合于数据量比较小的时候,有些方法适合于数据量比较大的时候。同一种方法,在数据量不同的时候,
复杂度会有非常大的差别。索引只能帮助SQLSERVER找到符合条件的记录。SQLSERVER还需要知道每一种操作
所要处理的数据量有多少,从而估算出复杂度,选取一个代价最小的执行计划。说得通俗一点,SQLSERVER要能够
知道数据是“长得什么样”的才能用最快方法完成指令
SQLSERVER不像人,光看看数据就能够大概心理有数。那么怎麽能让SQL知道数据的分布信息呢?
在数据库管理系统里有个常用的技术,就是数据“统计信息(statistics)”
SQLSERVER就是通过他了解数据的分布情况的
下面可以先来看前两篇文章的两张范例表在SalesOrderID这个字段上的统计信息,以便对这个概念有点直观认识
dbo.SalesOrderHeader_test保存的是每张订单的概要信息,一张订单只会有一条记录
所以SalesOrderID是不会重复的。现在这张表里,应该有31474条记录。SalesOrderID是一个int型的字段,
所以字段长度是4。
运行
DBCC SHOW_STATISTICS(tablename,INDEX OR STATISTICS name) DBCC SHOW_STATISTICS([SalesOrderHeader_test],SalesOrderHeader_test_CL)
正在更新 [dbo].[testpivot] [_WA_Sys_00000001_0425A276],不需要更新... [_WA_Sys_00000002_0425A276],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[Users] [IX_UserID],不需要更新... [_WA_Sys_00000002_08EA5793],不需要更新... [_WA_Sys_00000003_08EA5793],不需要更新... [_WA_Sys_00000004_08EA5793],不需要更新... [_WA_Sys_00000005_08EA5793],不需要更新... 已更新 0 条索引/统计信息,5 不需要更新。 正在更新 [dbo].[TABLE1] [INDEX_ID],不需要更新... [INDEX_CATEGORYID],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[TABLE2] [INDEX_CATEGORYID],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[Orders] [_WA_Sys_00000005_0EA330E9],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[Department] [CL_DepartmentID],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[UserInfo] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tb_test] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[Department9] [NCL_Name_GroupName],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[bulkinserttest] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[SystemPara] [_WA_Sys_00000001_173876EA],不需要更新... [_WA_Sys_00000002_173876EA],不需要更新... [_WA_Sys_00000004_173876EA],不需要更新... 已更新 0 条索引/统计信息,3 不需要更新。 正在更新 [dbo].[TB] [_WA_Sys_00000001_178D7CA5],不需要更新... [_WA_Sys_00000002_178D7CA5],不需要更新... [_WA_Sys_00000003_178D7CA5],不需要更新... 已更新 0 条索引/统计信息,3 不需要更新。 正在更新 [dbo].[SQLTRACESAMPLE] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[HeapTable] [_WA_Sys_00000001_1A69E950],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[testcolumn] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[encrypttb_demo] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[ClusteredTable] [CIX],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[test23] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[Table_1] [_WA_Sys_00000002_2022C2A6],不需要更新... [_WA_Sys_00000001_2022C2A6],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[Department10] [NCL_Name_GroupName],不需要更新... [_WA_Sys_00000003_2116E6DF],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[BankUser] [PK__BankUser__236943A5],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[PWDQuestion] [PK__PWDQuestion__2645B050],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[fulltext_test] [UQ__fulltext_test__28B808A7],不需要更新... [IX_ID],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[tabelcheckindent] [PK_tabelcheckindent],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[SecretInfo] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[Insert_Test] [_WA_Sys_00000001_2A164134],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[TestInsert] [PK__TestInsert__2B3F6F97],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[RowToColumn] [_WA_Sys_00000001_2C3393D0],不需要更新... [_WA_Sys_00000002_2C3393D0],不需要更新... [_WA_Sys_00000003_2C3393D0],不需要更新... [_WA_Sys_00000004_2C3393D0],不需要更新... [_WA_Sys_00000005_2C3393D0],不需要更新... [_WA_Sys_00000006_2C3393D0],不需要更新... [_WA_Sys_00000007_2C3393D0],不需要更新... [_WA_Sys_00000008_2C3393D0],不需要更新... 已更新 0 条索引/统计信息,8 不需要更新。 正在更新 [dbo].[Insert_Test2] [PK__Insert_Test2__2DE6D218],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[pagediff] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[DP_OilCanOption] [_WA_Sys_00000001_31EC6D26],不需要更新... [_WA_Sys_00000002_31EC6D26],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[DBCCResult] [_WA_Sys_00000002_32767D0B],不需要更新... [_WA_Sys_0000000A_32767D0B],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [sys].[fulltext_catalog_freelist_16] [docid],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [sys].[fulltext_index_map_667149422] [i1],不需要更新... [i2],不需要更新... [i3],不需要更新... [i4],不需要更新... 已更新 0 条索引/统计信息,4 不需要更新。 正在更新 [dbo].[计算列] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[LobTestTable] [_WA_Sys_00000003_351DDF8C],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[LobIndexTestTable] [IX_LobIndexTestTable],不需要更新... [IX_LobCIndexTestTable],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[Department3] [CL_DepartmentID],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[LobCIndexTestTable] [IX_LobCIndexTestTable],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[Department4] [PK_Department4_1],不需要更新... [_WA_Sys_00000002_3A179ED3],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[testheap2013119] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[Department5] [CL_Company],不需要更新... [_WA_Sys_00000002_3CF40B7E],不需要更新... [_WA_Sys_00000001_3CF40B7E],不需要更新... 已更新 0 条索引/统计信息,3 不需要更新。 正在更新 [dbo].[TESTkeylock] [PK_TEST11],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[Department6] [PK_Department6_1],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[ChangeAttempt] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[Department2] [PK__Department2__467D75B8],不需要更新... [_WA_Sys_00000003_4589517F],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[tempPKNCL] [PK__tempPKNCL__46E78A0C],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[test_index] [PK__test_index__489AC854],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[ddl_log] [_WA_Sys_00000002_48CFD27E],不需要更新... [_WA_Sys_00000003_48CFD27E],不需要更新... [_WA_Sys_00000004_48CFD27E],不需要更新... [_WA_Sys_00000005_48CFD27E],不需要更新... 已更新 0 条索引/统计信息,4 不需要更新。 正在更新 [dbo].[Tmp_testComputeColumn] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[test1] [PK_test1],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[test13] [pk],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[Department8] [NCL_Name_GroupName],不需要更新... [_WA_Sys_00000001_52E34C9D],不需要更新... [_WA_Sys_00000003_52E34C9D],不需要更新... 已更新 0 条索引/统计信息,3 不需要更新。 正在更新 [dbo].[Department12] [PK__Department12__7167D3BD],不需要更新... [NCL_Name_GroupName],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[CompareNonclusteredScan] [_WA_Sys_00000003_73501C2F],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[Department13] [PK__Department13__762C88DA],不需要更新... [NCL_Name_GroupName],不需要更新... [_WA_Sys_00000003_753864A1],不需要更新... 已更新 0 条索引/统计信息,3 不需要更新。 正在更新 [sys].[queue_messages_1977058079] [queue_clustered_index],不需要更新... [queue_secondary_index],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[Department11] [PK__Department11__7908F585],不需要更新... [NCL_Name_GroupName],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [sys].[queue_messages_2009058193] [queue_clustered_index],不需要更新... [queue_secondary_index],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [sys].[queue_messages_2041058307] [queue_clustered_index],不需要更新... [queue_secondary_index],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[Demo_AExportHeader] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[table_a] [_WA_Sys_00000001_7B905C75],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[tableA] [_WA_Sys_00000002_7E6CC920],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 已更新了所有表的统计信息。
View Code
相关文章推荐
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第三篇)
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第三篇)
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第一篇)
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第一篇)
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第二篇)
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第二篇)
- 通过使用第三方SDK来实现应用的分享,第三方登陆,数据信息统计等功能(ShareSDK)。
- 通过扩展属性为SqlServer的索引添加注释信息
- 第十二章——SQLServer统计信息(2)——非索引键上统计信息的影响
- 第十二章——SQLServer统计信息(2)——非索引键上统计信息的影响
- 第十二章——SQLServer统计信息(2)——非索引键上统计信息的影响
- MySQL数据、索引信息统计
- 第十二章——SQLServer统计信息(2)——非索引键上统计信息的影响
- pgpool 通过统计信息查看数据插入
- 第十二章——SQLServer统计信息(4)——在过滤索引上的统计信息
- sqlserver通过ignore_dup_key索引去除重复数据
- 关于通过聚集索引以及堆来对比数据表组织结构-SQLServer最优实践 的一点看法
- 第十二章——SQLServer统计信息(4)——在过滤索引上的统计信息
- 关于通过聚集索引以及堆来对比数据表组织结构-SQLServer最优实践 的一点看法
- 第十二章——SQLServer统计信息(4)——在过滤索引上的统计信息