多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 尽量少的占存储空间 当一个列可以选择多种数据类型的时候,应该优先考虑数字类型,其次是日期或二进制类型,最后是字符类型.对于相同级别的数据类型,应该优先选择占用空间小的数据类型 因为,比较排序的时候,他们更快 数据处理是以页为单位的,每个页的大小是固定的,存储单位小,每页就能放下更多的数据 ## int整型 年龄:tinyint(1) 0-255之间 乌龟年龄: smallint(2) mediumint(3) int(4) bigint(8) ![](https://box.kancloud.cn/9c424701d51d68471de67d4916fff755_1110x404.jpg) ## 时间类型 time() 时分秒 datetime() 年月日 时分秒 以YYYY-MM-DD HH:MM:SS[.fraction]格式存储日期时间,能支持微秒但是默认还是支持秒 如果我们要支持微秒要定义个长度 datetime(6)=YYYY-MM-DD HH:MM:SS.fraction datetime类型与时区无关,占用8个字节的存储空间 能到9999年 year() 年份 date() 年月日 3个字节 timestamp() 时间戳(1970-1-1到现在经历的秒数) 以YYYY-MM-DD HH:MM:SS[.fraction]格式显示,占用4个字节 时间范围1970-01-01到2038-01-19 类型显示依赖于所指定的时区 在行的数据修改时可以自行修改timestamp的值 根据不同时间信息的范围选取不同类型的使用 **注意:不要使用字符串类型来存储日期时间数据** 日期时间类型通常比字符串占用的存储空间小 日期时间类型在进行查找过滤时可以利用日期来进行对比 还有丰富的函数 使用int存储不如使用timestamp类型 # 数据的整合最好固定长度 char(长度) 固定长度,运行速度快,字符串存储在char类型中会删除末尾的空格 char类型适合存储经常更新的字符串列,mysql在运行中会一次性分配足够的内存,多频繁的更新不会造成列分裂,避免超出存储碎片 长度:255字符限制 varchar(长度) 长度不固定,内容比较少要进行部位操作,该类型要保留1-2个字节保存当前数据的长度 列的最大长度小于255则只占用1个额外字节用于记录字符串长度 列的最大长度大于255则只要占用2个额外字节用于记录字符串长度 长度:65535字节限制 存储汉字,例如字符集utf8的(每个汉字占据3个字节),最多可以存储65535/3-2字节 存储手机号码:char(11) Mysql在运算的时候,内存使用的固定宽度 # 最好存为整形 时间信息可以存储为整型的(时间戳) select from_unixstamp(时间戳) from 表名 set集合类型 多选:set(‘篮球’,’足球’,’棒球’,’乒乓球’); enum枚举类型 单选: enum(‘男’,’女’,’保密’); 推荐使用set和enum类型,内部会通过整型信息参数具体计算、运行。 ip地址也可以变为整型信息进行存储(mysql内部有算法,把ip变为数字): mysql: inet_aton(ip) inet_ntoa(数字) php: ip2long(ip) long2ip(数字)