1、日期型存储空间占用
官方文档对日期型存储空间占用分成了两个部分来说明,5.6.4以前和5.6.4以后,因为5.6.4是很久的版本了,所以我后面基于5.6.4以后的版本来说明
带上取值范围整理了一份表格
从上面表格中有两个点需要关注
1、放弃TIMESTAMP 类型吧。2038问题,虽然还有10多年,但的确是一个隐患,而datetime 只比TIMESTAMP 多占用一字节。 所以建表设计都用datetime 而不用 TIMESTAMP
2、year类型,范围可能和你想象不一样。
create table if not exists stt2
(
st1 year
);
insert into stt2
values(year('9999-12-01'));
会报如下错误
准备再写一期字符型的存储空间占用,空间占用的基础就写完了
为什么我要写空间占用呢?
有以下几个点
1、表设计的时候,知道空间占用与范围,可以使设计更合理
2、查询计划的ken_len 是一个很重要的数据,要完全看懂空间占用是前提
3、库表设计的时候,根据一些特性,避免一些坑(如:上面的日期型两个点。另外就是下一篇准备讲的,如果你的表字段有 varchar(60)之类的,我会强烈要求不要这么做。需要改为varchar(64))