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)

 

posted @   chenjiacheng  阅读(174)  评论(0编辑  收藏  举报
编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络
点击右上角即可分享
微信分享提示