MySQL中列类型的选择需要注意的问题

1. 在精度要求高的应用中,建议使用定点数来存储数值,以保证结果的准确性。

要用decimal不要使用float

mysql> create table t1(price float(9,2),dprice decimal(9,2));
mysql> insert into t1 values(1234567.55,1234567.55);

2. 录入手机号带来的问题

使用char(11)会占用较多的字节,gbk占用2字节*11,utf-8占用3*11。

可以使用bigint,宽度是20,只占用8个字节。

3. ip地址也可以采用int整型

使用函数进行转换:

inet_aton():把ip地址转换成整数

inet_ntoa():把整数转换成ip地址。

IPv4存储为int型

PHP:ip2long(), long2ip()

MySQL: inet_aton(), inet_ntoa();

4. 根据需求选择最小整数类型

比如用户在线状态:离线,在线,离开,忙碌,隐式等,可以采用0,1,2,3,来表示。

5. 避免字段内容为null,原因:null不利于索引,要用特殊的字节来标注,在磁盘上占据的空间其实更大

NULL的判断只能用is null,is not null

NULL影响查询速度,一般避免使值为NULL

mysql> create table t3(name char(1) not null default '')engine myisam;
Query OK, 0 rows affected (0.01 sec)

mysql> create table t4(name char(1))engine myisam;
Query OK, 0 rows affected (0.01 sec)
原文地址:https://www.cnblogs.com/chenjiacheng/p/6522265.html