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)
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络