一:什么是数据库的统计信息?
在数据库使用中经常会看见这个东西
可以看到有键,约束,触发器,索引,最后这个就是统计信息。
统计信息字面意思就是 统计一下多少数据呗,知道有多少东西,然后去分配空间去用呗。
你如果没有统计信息,里面有几百万条数据你都不知道,你查个东西不跟海底捞针一样,你要是知道有多少条数据,而且还
知道你想要的东西在哪个地方,那你查东西不快都不行。
所以我认为,统计信息就是数据库一个掌控全局的命脉。统计信息的能力越牛皮,使用的效率就越牛皮。
总结一句话:统计信息就是查询优化,查询优化器根据统计信息去寻找最好的执行计划去进行查询。
二:为什么要使用统计信息?
官方一点说:统计信息就是为了协助数据库管理系统的核心组件之一——性能优化器/查询优化器生成合适的执行计划从而尽可能高效地响应请求。
白话:能够知道数据的一个存储环境,也就意味掌控的能力就越强,数据越精确控制能力越强大,面对交互数据库的信息也能得心应手的去处理反馈。也就是说为了使用性能,要用统计信息。
三:统计信息的内容?
既然身为数据库的管家,对于信息所在空间那是一定要了解滴。
表有多少行/页
对于表中的每一列,唯一值的长度信息(最长,最短,平均)、数据值的范围(最大,最小,平均)
表上面的索引信息
这些都要清楚才行。只有清楚了这些内容,然后去分配空间什么的就不会资源浪费了,就像你就小份的饭量,给你大份吃不完不浪费了。
内容有三部分:1.头信息 2:密度 3:直方图
具体针对内容的意义以及一些查看语句可以看这篇文章
https://blog.csdn.net/kk185800961/article/details/42806709
https://blog.csdn.net/dba_huangzj/article/details/52859956
三:怎么使用统计信息?
1:系统创建 2:自己创建
系统创建的话有俩种情况:1种是建立索引会生成一个相应的统计信息,2种是查询优化器为查询谓词中的单列创建统计信息
什么是查询谓词:就是一个能够为true或false的表达式,所以本身字段为bit类型的列 系统是不会为他创建统计信息。
自己创建就是看使用情景自定义。