mysql 中字段类型与宽度的选择

MySql 中 varchar 和varchar 的区别

字段类型与合理的选择字段类型

注意:int字段设置宽度也可以设置到int最大容量

 

之前一直对于mysql的字段类型选择存在疑惑,int 与 tinyint , int(1) 与 tinyint(1) , varchar 与 char ,varchar(10) 与 char(10) ,分不清楚他们的区别.。

认为 char(10)可以存储10个字符 varchar (10) 也可以存储10个字符。那我为什么不直接使用varchar类型呢?那么存在char类型的意义又是什么呢?tinyint 可以存储 128到127(SIGNED),0到255(UNSIGNED) int也可以存储 那么多数字,甚至可以储存更大的数字,那么为什么不直接使用int 而采用 tinyint呢?

字段类型:因为数据库指定类型,在储存数据的时候就会占用不同大小的空间,TINYINT 占用 1个字节  INT 占用 4个字节 ,如果一个字段最大 128 如果采用int类型 那么数据库在储存 搜索 的时候就会比 TINYINT 类型多出三个字节的空间,数据量小的情况下影响不大,或者说无感,但是当数据量足够大的时候,就会导致数据库文件过大,查询速度慢的问题。

字段宽度:在指定字段类型之后,可能我们的数据达不到字段类型的最大宽度,也会造成空间浪费,比如储存MD5 32 位字符串,如果直接指定char(155),则会导致字段浪费125的宽度,char字段如果填充不满指定宽度还会使用0填充,就会使数据库多储存125个字符造成储存空浪费,在查询的时候也会影响查询速度.

例:

1.字段类型选择

储存整数采用int类型,储存字符串采用char或者varchar类型,【字段在实际操作用进行选择,这里只是举例】

2.字段宽选择

储存 1-9 的数字 采用 tinyint(1) , 储存 655360 采用 int(5)

储存固定32位长度 采用 char(32) , 储存 1-32 长度的字符串 采用 varchar(33)

 

posted @   夏秋初  阅读(1494)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示