本章主要介绍:数据类型对性能的影响html
mysql支持不少中数据类型,因此准时下面几个原则有利于作出更好的选择mysql
(1) 更好的一般更好,好比:一个字段(varchar)若是数据最长是10位,设计为varchar(100) 就对性能很影响spring
(2) 简单就好:好比整数比字节操做代价更低sql
字符集和校对规则是的字符比整数更复杂缓存
(3)尽可能避免null性能
若是查询在包含可为null的列,对mysql来讲更加难优化优化
整数分类:加密
(1)整数:不带小数点的数字spa
(2)实数 带小数点部分的数字.net
mysql存储数字类型的小数有三种方式:
float: 占用4 个字节
double:占用8 个字节
decimal: DECIMAL(M,D) M字节(D+2 , 若是M < D)
decimal用于精确度要求高的数据,它比浮点型(float、double消耗更多的空间)
DECIMAL(M,D) : M:总的位数 D:小数点位数 如 Decimal(5,2) :数据总长为5,小数点后面保留2位 前面保留3位
浮点型与decemal比较:
优势:精确度高
缺点:消耗资源多
经常使用字符串类型: varchar 、char
(1)varchar 保存的确定是存储数据大小,char才是设定长度的,
(2) varchar(255) 占用实际存储数据+1个字节 varchr(256) 占用实际数据长度+2
varchar(n):无论是否用了n个空间 都会消耗n个字节
(3) 效率上vachar 是固定长度 效率更高
(1) 定义: varchar用于存储可变字符串
(2)varchar(N):表示最多存储N个字符,实际应用中占用存储是根据实际存储的数据决定(如:varchar(5) 最多存放5个字符,可是我存放了2个,占用空房=2+1=3个字符,这里的2是数据字符,1是记录字符串长度)
(3) varchar(5) 与varchar(255) 均可以存储 hello 并且空间开销都同样是5+1字节
可是在mysql在利用内存块来保存内存值的时候,尤为是对数据进行排序的时候会按照表设计的大小占用空间,若是过大就很糟糕了
转:https://blog.csdn.net/xie_cinnamon/article/details/98314346
(4)varchar 在保存数据的时候 不会截掉最后的空格,因此在代码开发中记得使用trim()去掉先后空格
(5) UTF-8 状态下,单个 varchar 长度不能超过 (65535 - 2) / 3 = 21844;
(1) 类型是定长的
(2) 适合存储很短的字符串 或者 存储全部值都接近的长度, 如加密后的MD5
(3) char比varchar在存储空间上更有效率,如:varchar(1) 占用2个字节,另外一个记录长度,char(1)只须要1个字节,并且char查询速度也更高
(1)timestamp 时间范围小,datetime时间范围大 可是精确度都是 yyyy-MM-dd HH:mm:ss,通常状况timesatamp够用
(2)timestamp占用4个字节 datetime占用8个字节
总结:平时开发用timestamp
使用:
https://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html
(1) 第一范式(确保每列保持原子性)
(2) 第二范式(确保表中的每列都和主键相关)
(3) 第三范式(确保每列都和主键列直接相关,而不是间接相关)
主要针对 第三范式:确保每列都和主键列直接相关,而不是间接相关
遵照第三范式:
反范式:
将用户数据 冗余到订单信息表中,这样不需再关联表 查询效率提升,缺点:数据被冗余了
定义:就是优先处理完成的数据结果表
(1) 用途1:对于数据交易十分频繁的系统咱们要统计 用户实时登陆状况很难,就可使用定时任务汇总数据到一张表中
(2) 用途2:对于政府那种须要统计不少数据 求出须要数据的(很占用内存),能够在晚上使用定时任务跑出上一天的数据
实现方式:
(1) mysql 定时执行任务 https://my.oschina.net/springMVCAndspring/blog/1820684
(2) spring定时任务: http://cron.qqe2.com/