MySQL数据类型存储空间占用数值型

1、数值型存储空间占用

我整理了一下带上范围,附下表

decimal类型的空间占用算法有点复杂。我看官方文档先没有看懂,后面不断实践,总结出来了。我这里先贴一下官方原文档

要算decimal(M,D) 占多大存储空间。是下面四部份之和
1、 (M-D) div 9 * 4
2、 D div 9 * 4
3、 N1=(M-D) mod 9 然后用N1值在上图 leftover digits 中对应找占多大空间
4、 N2=D mod 9 然后用N2值在上图 leftover digits 中对应找占多大空间

我写了一个SQL可直接查
如:

set @m =20,@d = 10; select (@M-@D) div 9 *4 + @d div 9 *4 + case (@M-@d) mod 9 when 0 then 0 when 1 then 1 when 2 then 1 when 3 then 2 when 4 then 2 when 5 then 3 when 6 then 3 when 7 then 4 when 8 then 4 end + case @d mod 9 when 0 then 0 when 1 then 1 when 2 then 1 when 3 then 2 when 4 then 2 when 5 then 3 when 6 then 3 when 7 then 4 when 8 then 4 end as size