MySQL数据库中字段类型与设计原则
字段类型的设计和选择
1.单表字段不宜过多
建议最多30个以内
字段越多,会导致性能下降,并且增加开发难度
2.使用小而简单的合适数据类型
a.字符串类型
固定长度使用char,非定长使用varchar,并分配合适且足够的空间
char在查询时,会把末尾的空格去掉
b.小数类型
一般情况可以使用float或double,占用空间小,但存储可能会损失精度
decimal可存储精确小数,存储财务数据或经度要求高时使用decimal
c.时间日期
通常尽量使用timestamp,因为它占用空间小,并且会自动进行时区转换,无需关心地区时差
datetime和timestamp只能存储最小颗粒度是秒,可以使用BIGINT类型存储微秒级别的时间戳
d.大数据 blob和text
blob和text是为存储很大的数据的而设计的字符串数据类型,但通常建议避免使用
MySQL会把每个blob和text当做独立的对象处理,存储引擎存储时会做特殊处理,当值太大,InnoDB使用专门的外部存储区域进行存储,行内存储指针,然后在外部存储实际的值。这些都会导致严重的性能开销
blob是二进制字符串,text是非二进制字符串,两者均可存放大量的信息。Blob主要存储图片、音频信息等,而text只能存储纯文本文件。
3.尽量将列设置为NOT NULL
a.可为NULL的列被索引时,占用更多的存储空间,一般,把可为NULL的列改为NOT NULL带来的提升比较少。
b.可为NULL的列,在使用索引和值比较时,MySQL需要做特殊的处理,损耗一定的性能,更难优化
建议:通常最好指定列为NOT NULL,除非真的需要存储NULL值
4.尽量使用整型做主键
a.整数型通常是标识列最好的选择,因为它们很快并且可以使用AUTO_INCREMENT
b.应该避免使用字符串类型作为标识列,因为它们很消耗空间,并且通常比数字类型慢
c.对于完全"随机"的字符串也需要多加注意。例如:MD5(),SHAI()或者UUID()产生的字符串。这些函数生成的新值也任意分布在很大空间内,这会导致INSERT和一些SELECT语句很缓慢
MySQL数据库中字段类型与设计原则相关推荐
- MySQL数据库中有字段类型是日期,时间的插入语句处理
MySQL数据库中有字段类型是日期,时间的插入语句处理 什么是时间戳? TIMESTAMP是一种类型,具体的值:19990717080000 CURRENT_TIMESTAMP是什么意思? on up ...
- 数据库中字段类型对应的C#中的数据类型
数据库中字段类型对应C#中的数据类型: 数据库 C#程序 int int32 text string bigint int64 binary System.Byte[] ...
- java中时间入数据库格式转换_数据库中字段类型为datetime,转换成java中的Date类型...
数据类型对照 点击打开链接 JDBC: PreparedStatement ps = conn.prepareStatement(sql); ResultSet rs = ps.executeQuer ...
- 使用MyBatis Plus 3.2.0版本插件代码生成器生成实体类后,对于数据库中字段类型datetime的字段会转变为LocalDateTime类型
问题描述: 使用MyBatis Plus 3.2.0版本插件代码生成器生成实体类后,对于数据库中字段类型datetime的字段会转变为LocalDateTime类型,IDEA提示报错"Usa ...
- Mysql数据库的字段类型:
数据库的数据类型和字段属性: 1.数值 ①tinyint 十分小的数据 1个字节 ②smallint 较小的数据 2个字节 ③mediumint ...
- linux下查看mysql数据库的字段类型_系统运维|[小白技巧]如何在Linux上检查MySQL数据表的存储引擎类型...
提问: 我想要知道我的MySQL数据库是MyISAM还是Innodb类型.我该如何检查MySQL数据库表的类型? MySQl主要使用两种存储引擎:MyISAM 和 Innodb.MyISAM是非事务的 ...
- mysql 文章 字段设计_在mysql数据库中,文章表设计有啥好的思路
Q: 用mysql设计一张文章表,不知道有啥好的思路! 我是这样的,应为考虑附件和图片,所以我的文章表除了有varchar(1000)的文章内容,还设置了个Bolb接收附件和图片. 我用的是mysql ...
- 如何获取mysql数据库中字段的注释和类型长度
因为某种需求,想要获取到mysql中所有字段的注释和类型等信息,可通过以下sql查询. 查询sql SELECT COLUMN_NAME as '列名',COLUMN_COMMENT as '字段注释 ...
- 在mysql数据库中,文章表设计有啥好的思路
Q: 用mysql设计一张文章表,不知道有啥好的思路! 我是这样的,应为考虑附件和图片,所以我的文章表除了有varchar(1000)的文章内容,还设置了个Bolb接收附件和图片. 我用的是mysql ...
最新文章
- 排名看似毫无波澜的,但 R 语言热度仍在上升 | 8月编程语言排行
- CM记录-选择合适的硬件
- 帆软finereport实现动态切换分组和列表模式
- plsql中文乱码问题(显示问号)
- CSS样式:2、超出隐藏控制
- UNP Chapter 25 - 原始套接口
- linux web目录写入权限命令,Linux下Web目录和文件安全权限设置
- 数学建模1:lingo软件求解优化模型
- 如何安装WinDriver—linux 系统下和Windows系统下———官网中文教程
- 免费老牌php空间,Alwaysdata.com老牌稳定法国PHP免费空间
- 软件工程导论——课堂学习笔记
- pip安装scikit-learn
- 服务器多网卡多路由策略
- 一个区块链项目的40种死法 |链捕手
- mPOS安全提升之路
- 计算机大赛鼓励语录,致2019年的自己 鼓励自己的经典语句
- 2022(秋)工程伦理答案 第二章
- java毕业生设计信管专业毕业生就业管理信息系统计算机源码+系统+mysql+调试部署+lw
- React学习(6)-React中组件的数据-state
- 猫盘X3P 自启动frp及tailscale配置开机自启
热门文章
- Java实现超级简易的银行ATM机项目(详细注释版)
- 河南职称计算机证书领取,河南省职称高级职称评审结束后多长时间可以拿到证..._职称英语考试_帮考网...
- 论文阅读:Out of time: automated lip sync in the wild
- 魔兽争霸linux版本下载地址,Linux下能玩魔兽世界、打DOTA2了 4K 120Hz很爽
- 最新Vue 天禹老师笔记
- Android自学笔记(番外篇):全面搭建Linux环境(一)——前期准备工作
- Auto packing the repository in background for optimum performance. See git help gc for manual hous
- 自适应近聚类(Clustering and Projected Clustering with Adaptive Neighbors)
- 这种让你肚子疼的分子机制找到了!西湖大学Cell论文揭示病菌入侵人体“新大门”...
- idea中lombok下载方法和搜不到lombok解决方法