目录
1、更小的通常更好
一般应该选择正确的存储类型最小的数据类型。因为较小的数据类型占用空间内存更小,也可以说相同的空间能存放的数据更多,这个也是影响查询效率的一个重要因素。
比如:是有一个类型既可以用字符串也可以使用整型,优先选择整型。因为字符串牵涉到了字符集及校对规则等。
2、尽量避免NULL
通常情况最好为数据库表,指定列为NOT NULL。因为可为NULL的列使得索引、索引统计和值比较都更复杂。可为NULL的列会使用更多的存储空间。
3、简单就好
因为简单的数据类型所需的CPU周期更少。比如最好使用MySQL内置的时间类型,而不是使用字符串来存储时间。
4、整数类型
存储整数,可以使用这几种整数类型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT。
数据类型 | 占用字节 |
TINYINT | 1 |
SMALLINT | 2 |
MEDIUMINT | 3 |
INT | 4 |
BIGINT | 8 |
如果数据不区分正负,最好选择为UNSIGNED无符号,相同的存储空间能够存储更多的整数范围。MySQL中没有long型,对应的只有bigint
5、实数类型
DECIMAL对于列的空间消耗比较大 ,在精度不敏感和需要快速运算的时候,选择FLOAT和 DOUBLE。应该尽量只在对小数进行精确计算时才使用DECIMAL。
但在数据量比较大的而且要求精度时,可以考虑使用BIGINT代替DECIMAL,将需要存储的货币单位根据小数的位数乘以相应的倍数进行存储。
6、CHAR与VARCHAR如何选择
CHAR:通常固定长度的数据,比如MD5密码加密数据,T和F就比较使用使用CHAR(1),如果使用VARCHAR会产生一个额外的字节长度。经常更新的列也比较适合使用CHAR类型,数据比较小的也使用此类型。
VARCHAR:可变长度。每个字符都使用不同的字节数进行存储 。通常经常更新的列不适合使用可变长度,可能会产生内存碎片。其实VARCHAR(5)和VARCHAR(200)存储'hello'在磁盘空间上开销是一样的。但是最好是只分配真正需要的空间 。
7、命名规范
- 数据库、表、字段的命名要遵守可读性原则,尽可能少使用或者不使用缩写。
- 表名、字段名必须使用小写字母或数字。 说明:MySQL在Windows下不区分大小写,但在Linux下默认是区分大小写。因此,数据库名、表名、字段名,都不允许出现任何大写字母
- 表名不使用复数名词
- 数据库、表、字段的命名禁用保留字,如desc、range、match之类
- 主键索引名为pk字段名;唯一索引名为uk字段名;普通索引名则为idx_字段名