课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
MySQL库表是程序员在学习数据库服务器开发技术的时候需要掌握的一项编程应用方式,而今天我们就一起来了解一下,MySQL库表设计都有哪些设计技巧。
#类型的选用
存储字节越小,占用空间越小。所以本着小化存储的原则,我们要尽量选择合适的整型,下面给出几个常见案例及选择建议。
根据存储范围选择合适的类型,比如人的年龄用unsignedtinyint(范围0~255,人的寿命不会超过255岁);海龟就必须是smallint,但如果是太阳的年龄,就必须是int。
若存储的数据为非负数值,建议使用UNSIGNED标识,可以扩大正数的存储范围。
短数据使用TINYINT或SMALLINT,比如:人类年龄,城市代码。
存储状态变量的字段用TINYINT,比如:是否删除,0代表未删除1代表已删除。
主键列,无负数,建议使用INTUNSIGNED或者BIGINTUNSIGNED;预估字段数字取值会超过42亿,使用BIGINT类型。
2.时间类型的选用
timestamp翻译为汉语即"时间戳",它是当前时间到Unix元年(1970年1月1日0时0分0秒)的秒数,占用4个字节,而且是以UTC的格式储存,它会自动检索当前时区并进行转换。datetime以8个字节储存,不会进行时区的检索。也就是说,对于timestamp来说,如果储存时的时区和检索时的时区不一样,那么拿出来的数据也不一样。对于datetime来说,存什么拿到的就是什么。下面给出几个常见案例及选择建议。
根据存储范围来选取,比如生产时间,保质期等时间建议选取datetime,因为datetime能存储的范围更广。
记录本行数据的插入时间和修改时间建议使用timestamp。
和时区相关的时间字段选用timestamp。
如果只是想表示年、日期、时间的还可以使用year、date、time,它们分别占据1、3、3字节,而datetime就是它们的集合。
如果timestamp字段经常用于查询,我们还可以使用MySQL内置的函数FROM_UNIXTIME()、UNIX_TIMESTAMP(),将日期和时间戳数字来回转换,转换后可以用INTUNSIGNED存储时间,数字是连续的,占用空间更小,并且可以使用索引提升查询性能。
3.存储IP值
IP值一般使用char或varchar进行存储,但是当进行查找和统计时,字符类型不是很高效。MySQL数据库内置了两个IP相关的函数INET_ATON()、INET_NTOA(),可以实现IP地址和整数类型的转换。转换后使用可以INTUNSIGNED来存储IP,转换后的数字是连续的,提高了查询性能,占用空间更小。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。