SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第三篇)
2017-12-01 16:39
417 查看
SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第三篇)
最近真的没有什么精力写文章,天天加班,为了完成这个系列,硬着头皮上了再看这篇文章之前请大家先看我之前写的第一篇和第二篇
第一篇:SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第一篇)
第二篇:SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第二篇)
1、统计信息的含义与作用
为了以尽可能快的速度完成语句,光有索引是不够的。对于同一句话,SQLSERVER有很多种方法来完成他。
有些方法适合于数据量比较小的时候,有些方法适合于数据量比较大的时候。同一种方法,在数据量不同的时候,
复杂度会有非常大的差别。索引只能帮助SQLSERVER找到符合条件的记录。SQLSERVER还需要知道每一种操作
所要处理的数据量有多少,从而估算出复杂度,选取一个代价最小的执行计划。说得通俗一点,SQLSERVER要能够
知道数据是“长得什么样”的才能用最快方法完成指令
SQLSERVER不像人,光看看数据就能够大概心理有数。那么怎麽能让SQL知道数据的分布信息呢?
在数据库管理系统里有个常用的技术,就是数据“统计信息(statistics)”
SQLSERVER就是通过他了解数据的分布情况的
下面可以先来看前两篇文章的两张范例表在SalesOrderID这个字段上的统计信息,以便对这个概念有点直观认识
dbo.SalesOrderHeader_test保存的是每张订单的概要信息,一张订单只会有一条记录
所以SalesOrderID是不会重复的。现在这张表里,应该有31474条记录。SalesOrderID是一个int型的字段,
所以字段长度是4。
运行
1 DBCC SHOW_STATISTICS(tablename,INDEX OR STATISTICS name) 2 3 DBCC SHOW_STATISTICS([SalesOrderHeader_test],SalesOrderHeader_test_CL)
1 正在更新 [dbo].[testpivot] 2 [_WA_Sys_00000001_0425A276],不需要更新... 3 [_WA_Sys_00000002_0425A276],不需要更新... 4 已更新 0 条索引/统计信息,2 不需要更新。 5 6 正在更新 [dbo].[Users] 7 [IX_UserID],不需要更新... 8 [_WA_Sys_00000002_08EA5793],不需要更新... 9 [_WA_Sys_00000003_08EA5793],不需要更新... 10 [_WA_Sys_00000004_08EA5793],不需要更新... 11 [_WA_Sys_00000005_08EA5793],不需要更新... 12 已更新 0 条索引/统计信息,5 不需要更新。 13 14 正在更新 [dbo].[TABLE1] 15 [INDEX_ID],不需要更新... 16 [INDEX_CATEGORYID],不需要更新... 17 已更新 0 条索引/统计信息,2 不需要更新。 18 19 正在更新 [dbo].[TABLE2] 20 [INDEX_CATEGORYID],不需要更新... 21 已更新 0 条索引/统计信息,1 不需要更新。 22 23 正在更新 [dbo].[Orders] 24 [_WA_Sys_00000005_0EA330E9],不需要更新... 25 已更新 0 条索引/统计信息,1 不需要更新。 26 27 正在更新 [dbo].[Department] 28 [CL_DepartmentID],不需要更新... 29 已更新 0 条索引/统计信息,1 不需要更新。 30 31 正在更新 [dbo].[UserInfo] 32 已更新 0 条索引/统计信息,0 不需要更新。 33 34 正在更新 [dbo].[tb_test] 35 已更新 0 条索引/统计信息,0 不需要更新。 36 37 正在更新 [dbo].[Department9] 38 [NCL_Name_GroupName],不需要更新... 39 已更新 0 条索引/统计信息,1 不需要更新。 40 41 正在更新 [dbo].[bulkinserttest] 42 已更新 0 条索引/统计信息,0 不需要更新。 43 44 正在更新 [dbo].[SystemPara] 45 [_WA_Sys_00000001_173876EA],不需要更新... 46 [_WA_Sys_00000002_173876EA],不需要更新... 47 [_WA_Sys_00000004_173876EA],不需要更新... 48 已更新 0 条索引/统计信息,3 不需要更新。 49 50 正在更新 [dbo].[TB] 51 [_WA_Sys_00000001_178D7CA5],不需要更新... 52 [_WA_Sys_00000002_178D7CA5],不需要更新... 53 [_WA_Sys_00000003_178D7CA5],不需要更新... 54 已更新 0 条索引/统计信息,3 不需要更新。 55 56 正在更新 [dbo].[SQLTRACESAMPLE] 57 已更新 0 条索引/统计信息,0 不需要更新。 58 59 正在更新 [dbo].[HeapTable] 60 [_WA_Sys_00000001_1A69E950],不需要更新... 61 已更新 0 条索引/统计信息,1 不需要更新。 62 63 正在更新 [dbo].[testcolumn] 64 已更新 0 条索引/统计信息,0 不需要更新。 65 66 正在更新 [dbo].[encrypttb_demo] 67 已更新 0 条索引/统计信息,0 不需要更新。 68 69 正在更新 [dbo].[ClusteredTable] 70 [CIX],不需要更新... 71 已更新 0 条索引/统计信息,1 不需要更新。 72 73 正在更新 [dbo].[test23] 74 已更新 0 条索引/统计信息,0 不需要更新。 75 76 正在更新 [dbo].[Table_1] 77 [_WA_Sys_00000002_2022C2A6],不需要更新... 78 [_WA_Sys_00000001_2022C2A6],不需要更新... 79 已更新 0 条索引/统计信息,2 不需要更新。 80 81 正在更新 [dbo].[Department10] 82 [NCL_Name_GroupName],不需要更新... 83 [_WA_Sys_00000003_2116E6DF],不需要更新... 84 已更新 0 条索引/统计信息,2 不需要更新。 85 86 正在更新 [dbo].[BankUser] 87 [PK__BankUser__236943A5],不需要更新... 88 已更新 0 条索引/统计信息,1 不需要更新。 89 90 正在更新 [dbo].[PWDQuestion] 91 [PK__PWDQuestion__2645B050],不需要更新... 92 已更新 0 条索引/统计信息,1 不需要更新。 93 94 正在更新 [dbo].[fulltext_test] 95 [UQ__fulltext_test__28B808A7],不需要更新... 96 [IX_ID],不需要更新... 97 已更新 0 条索引/统计信息,2 不需要更新。 98 99 正在更新 [dbo].[tabelcheckindent] 100 [PK_tabelcheckindent],不需要更新... 101 已更新 0 条索引/统计信息,1 不需要更新。 102 103 正在更新 [dbo].[SecretInfo] 104 已更新 0 条索引/统计信息,0 不需要更新。 105 106 正在更新 [dbo].[Insert_Test] 107 [_WA_Sys_00000001_2A164134],不需要更新... 108 已更新 0 条索引/统计信息,1 不需要更新。 109 110 正在更新 [dbo].[TestInsert] 111 [PK__TestInsert__2B3F6F97],不需要更新... 112 已更新 0 条索引/统计信息,1 不需要更新。 113 114 正在更新 [dbo].[RowToColumn] 115 [_WA_Sys_00000001_2C3393D0],不需要更新... 116 [_WA_Sys_00000002_2C3393D0],不需要更新... 117 [_WA_Sys_00000003_2C3393D0],不需要更新... 118 [_WA_Sys_00000004_2C3393D0],不需要更新... 119 [_WA_Sys_00000005_2C3393D0],不需要更新... 120 [_WA_Sys_00000006_2C3393D0],不需要更新... 121 [_WA_Sys_00000007_2C3393D0],不需要更新... 122 [_WA_Sys_00000008_2C3393D0],不需要更新... 123 已更新 0 条索引/统计信息,8 不需要更新。 124 125 正在更新 [dbo].[Insert_Test2] 126 [PK__Insert_Test2__2DE6D218],不需要更新... 127 已更新 0 条索引/统计信息,1 不需要更新。 128 129 正在更新 [dbo].[pagediff] 130 已更新 0 条索引/统计信息,0 不需要更新。 131 132 正在更新 [dbo].[DP_OilCanOption] 133 [_WA_Sys_00000001_31EC6D26],不需要更新... 134 [_WA_Sys_00000002_31EC6D26],不需要更新... 135 已更新 0 条索引/统计信息,2 不需要更新。 136 137 正在更新 [dbo].[DBCCResult] 138 [_WA_Sys_00000002_32767D0B],不需要更新... 139 [_WA_Sys_0000000A_32767D0B],不需要更新... 140 已更新 0 条索引/统计信息,2 不需要更新。 141 142 正在更新 [sys].[fulltext_catalog_freelist_16] 143 [docid],不需要更新... 144 已更新 0 条索引/统计信息,1 不需要更新。 145 146 正在更新 [sys].[fulltext_index_map_667149422] 147 [i1],不需要更新... 148 [i2],不需要更新... 149 [i3],不需要更新... 150 [i4],不需要更新... 151 已更新 0 条索引/统计信息,4 不需要更新。 152 153 正在更新 [dbo].[计算列] 154 已更新 0 条索引/统计信息,0 不需要更新。 155 156 正在更新 [dbo].[LobTestTable] 157 [_WA_Sys_00000003_351DDF8C],不需要更新... 158 已更新 0 条索引/统计信息,1 不需要更新。 159 160 正在更新 [dbo].[LobIndexTestTable] 161 [IX_LobIndexTestTable],不需要更新... 162 [IX_LobCIndexTestTable],不需要更新... 163 已更新 0 条索引/统计信息,2 不需要更新。 164 165 正在更新 [dbo].[Department3] 166 [CL_DepartmentID],不需要更新... 167 已更新 0 条索引/统计信息,1 不需要更新。 168 169 正在更新 [dbo].[LobCIndexTestTable] 170 [IX_LobCIndexTestTable],不需要更新... 171 已更新 0 条索引/统计信息,1 不需要更新。 172 173 正在更新 [dbo].[Department4] 174 [PK_Department4_1],不需要更新... 175 [_WA_Sys_00000002_3A179ED3],不需要更新... 176 已更新 0 条索引/统计信息,2 不需要更新。 177 178 正在更新 [dbo].[testheap2013119] 179 已更新 0 条索引/统计信息,0 不需要更新。 180 181 正在更新 [dbo].[Department5] 182 [CL_Company],不需要更新... 183 [_WA_Sys_00000002_3CF40B7E],不需要更新... 184 [_WA_Sys_00000001_3CF40B7E],不需要更新... 185 已更新 0 条索引/统计信息,3 不需要更新。 186 187 正在更新 [dbo].[TESTkeylock] 188 [PK_TEST11],不需要更新... 189 已更新 0 条索引/统计信息,1 不需要更新。 190 191 正在更新 [dbo].[Department6] 192 [PK_Department6_1],不需要更新... 193 已更新 0 条索引/统计信息,1 不需要更新。 194 195 正在更新 [dbo].[ChangeAttempt] 196 已更新 0 条索引/统计信息,0 不需要更新。 197 198 正在更新 [dbo].[Department2] 199 [PK__Department2__467D75B8],不需要更新... 200 [_WA_Sys_00000003_4589517F],不需要更新... 201 已更新 0 条索引/统计信息,2 不需要更新。 202 203 正在更新 [dbo].[tempPKNCL] 204 [PK__tempPKNCL__46E78A0C],不需要更新... 205 已更新 0 条索引/统计信息,1 不需要更新。 206 207 正在更新 [dbo].[test_index] 208 [PK__test_index__489AC854],不需要更新... 209 已更新 0 条索引/统计信息,1 不需要更新。 210 211 正在更新 [dbo].[ddl_log] 212 [_WA_Sys_00000002_48CFD27E],不需要更新... 213 [_WA_Sys_00000003_48CFD27E],不需要更新... 214 [_WA_Sys_00000004_48CFD27E],不需要更新... 215 [_WA_Sys_00000005_48CFD27E],不需要更新... 216 已更新 0 条索引/统计信息,4 不需要更新。 217 218 正在更新 [dbo].[Tmp_testComputeColumn] 219 已更新 0 条索引/统计信息,0 不需要更新。 220 221 正在更新 [dbo].[test1] 222 [PK_test1],不需要更新... 223 已更新 0 条索引/统计信息,1 不需要更新。 224 225 正在更新 [dbo].[test13] 226 [pk],不需要更新... 227 已更新 0 条索引/统计信息,1 不需要更新。 228 229 正在更新 [dbo].[Department8] 230 [NCL_Name_GroupName],不需要更新... 231 [_WA_Sys_00000001_52E34C9D],不需要更新... 232 [_WA_Sys_00000003_52E34C9D],不需要更新... 233 已更新 0 条索引/统计信息,3 不需要更新。 234 235 正在更新 [dbo].[Department12] 236 [PK__Department12__7167D3BD],不需要更新... 237 [NCL_Name_GroupName],不需要更新... 238 已更新 0 条索引/统计信息,2 不需要更新。 239 240 正在更新 [dbo].[CompareNonclusteredScan] 241 [_WA_Sys_00000003_73501C2F],不需要更新... 242 已更新 0 条索引/统计信息,1 不需要更新。 243 244 正在更新 [dbo].[Department13] 245 [PK__Department13__762C88DA],不需要更新... 246 [NCL_Name_GroupName],不需要更新... 247 [_WA_Sys_00000003_753864A1],不需要更新... 248 已更新 0 条索引/统计信息,3 不需要更新。 249 250 正在更新 [sys].[queue_messages_1977058079] 251 [queue_clustered_index],不需要更新... 252 [queue_secondary_index],不需要更新... 253 已更新 0 条索引/统计信息,2 不需要更新。 254 255 正在更新 [dbo].[Department11] 256 [PK__Department11__7908F585],不需要更新... 257 [NCL_Name_GroupName],不需要更新... 258 已更新 0 条索引/统计信息,2 不需要更新。 259 260 正在更新 [sys].[queue_messages_2009058193] 261 [queue_clustered_index],不需要更新... 262 [queue_secondary_index],不需要更新... 263 已更新 0 条索引/统计信息,2 不需要更新。 264 265 正在更新 [sys].[queue_messages_2041058307] 266 [queue_clustered_index],不需要更新... 267 [queue_secondary_index],不需要更新... 268 已更新 0 条索引/统计信息,2 不需要更新。 269 270 正在更新 [dbo].[Demo_AExportHeader] 271 已更新 0 条索引/统计信息,0 不需要更新。 272 273 正在更新 [dbo].[table_a] 274 [_WA_Sys_00000001_7B905C75],不需要更新... 275 已更新 0 条索引/统计信息,1 不需要更新。 276 277 正在更新 [dbo].[tableA] 278 [_WA_Sys_00000002_7E6CC920],不需要更新... 279 已更新 0 条索引/统计信息,1 不需要更新。 280 281 已更新了所有表的统计信息。
View Code
相关文章推荐
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第三篇)
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第三篇)
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第一篇)
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第二篇)
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第二篇)
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第一篇)
- MySQL数据、索引信息统计
- SqlServer 聚集索引重建后变换列位置统计信息列名不变
- 第十二章——SQLServer统计信息(2)——非索引键上统计信息的影响
- 第十二章——SQLServer统计信息(2)——非索引键上统计信息的影响
- 第十二章——SQLServer统计信息(2)——非索引键上统计信息的影响
- 通过扩展属性为SqlServer的索引添加注释信息
- pgpool 通过统计信息查看数据插入
- 通过使用第三方SDK来实现应用的分享,第三方登陆,数据信息统计等功能(ShareSDK)。
- 第十二章——SQLServer统计信息(2)——非索引键上统计信息的影响
- 人工智能系统通过网络提高其性能 “信息提取”系统转换纯文本为可以统计分析的数据
- 第十二章——SQLServer统计信息(4)——在过滤索引上的统计信息
- 第十二章——SQLServer统计信息(4)——在过滤索引上的统计信息
- 第十二章——SQLServer统计信息(4)——在过滤索引上的统计信息
- 第十二章——SQLServer统计信息(4)——在过滤索引上的统计信息