Mysql的一些笔记
如何选择合适的字段类型
在符合应用要求(取值范围、精度)的前提下,尽量使用“短”数据类型。“短”数据类型的数据在外存(例如硬盘)、内存和缓存中需要更少的存储空间, 查询连接的效率更高,计算速度更快。例如,对于存储字符串数据的字段, 建议优先选用char(n) 和 varchar(n), 长度不够时选用 text 数据类型。
数据类型越简单越好。与字符串相比,整数处理开销更小,因此尽量使用整数代替字符串。例如,字符串数据 ‘12345’ 的存储方法为 110001 110010 110011 110100 110101, 整数smallint数据12345的存储方法为 11000000111001 ,可以看出,字符串数据类型的存储较为复杂。
尽量采用精确小数类型(例如 decimal),而不采用浮点数类型。使用精确小数类型不仅能够保证数据计算更为精确,还可以节省储存空间,例如百分比使用 decimal(4, 2) 即可。
在 MySQL 中,应该用内置的日期和时间数据类型,而不是用字符串来存储日期和时间。
尽量避免 NULL 字段,建议将字段指定为 Not NULL 约束。 这是由于:在 MySQL 中,含有空值的列很难进行查询优化,NULL值会使索引的统计信息以及比较运算变得更加复杂。推荐使用 0、一个特殊的值或者一个空字符串代替NULL值。
字段长度的一些小细节
整数 小数 和二进制数类型的单位是字节 tinyint 的长度为 1 字节, 就是 8 位。 它所能表示的数字就是 0 - 255 即 (二进制 11111111) , 然后 tinyint(4) 表示的是位数不够时是否在左侧补 0 , 比如我插入一个 1 , tinyint(4) 就会变成 0001 , 补 0 应该没什么用, 就是查数据的时候有一个对齐效果
字段串的单位是字符数,本人亲测 char(255) 刚刚好能插入 225个汉字。 它的在底层的实际长度和字符集有关。 比如中文 utf-8 一个字符串占两个字符串的长度。 varchar 是可变长度的字符串, varchar 和 char 的区别在于底层, 比如 char(2) 只插入一个字也是占两个字的空间, varchar(2) 只占一个。 但是它俩都是最多只能插入两个字.
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: