Mysql字段类型设计相关问题!

Mysql是以文件存储在我们的系统的硬盘上面,那么

(1)当我们读取写入的时候就会有磁盘IO的问题

(2)当我们存储的数据是以页单位存储,而且每页的大小是16K,那么我们要尽可能的让我们的一页数据存放的更多。表结构宽度不要太大,也就是列数不要过多,保存更可能多的行数,那么针对行数存储就会涉及到字段类型选择的问题

以下字节按照utf8来示例,一个中文占3个字节,一个数字和字母是一个字节,而且utf8是变长的,范围在1-6之间

(1)数字比字符串处理的速度要快

(2)当我们需要存储一个固定的长度的值(身份证,手机号)并且长度小于50个字节的时候,那么我们可以选用char(n)

(3)当我们要存储大于50个字节长度的值时候选用varchar(n)

(4)当我们存储时间的时候datatime>int>char>varchar,但是int是有时间范围限制的,只能存到2038年

(5)float和decimal的选择,当我们需要存储一个精度很高的值的时候,那么我们就要存decimal,float只能保存到小数点后7位

下面是类型占用的字节数

时间: 2024-10-23 15:07:27

Mysql字段类型设计相关问题!的相关文章

MySQL字段类型详解

MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述. 概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式.由MySQL支持的列类型列在下面.下列代码字母用于描述中:M指出最大的显示尺寸.最大的合法的显示尺寸是 255 .D适用于浮点类型并且指出跟随在十进制小数点后的数码的数量.最大可能的值是30,但是应该不大于M

MySQL字段类型说明

MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述.概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式. 由MySQL支持的列类型列在下面.下列代码字母用于描述中: M 指出最大的显示尺寸.最大的合法的显示尺寸是 255 . D 适用于浮点类型并且指出跟随在十进制小数点后的数码的数量.最大可能的值是30,但是应该

比较详细的MySQL字段类型说明_Mysql

由MySQL支持的列类型列在下面.下列代码字母用于描述中: M 指出最大的显示尺寸.最大的合法的显示尺寸是 255 . D 适用于浮点类型并且指出跟随在十进制小数点后的数码的数量.最大可能的值是30,但是应该不大于M-2. 方括号("["和"]")指出可选的类型修饰符的部分. 注意,如果你指定一个了为ZEROFILL,MySQL将为该列自动地增加UNSIGNED属性. TINYINT[(M)] [UNSIGNED] [ZEROFILL] 一个很小的整数.有符号的范围

mysql 增加修改字段类型及删除字段类型_Mysql

MySQL添加字段: alter table `user_movement_log` Add column GatewayId int not null default 0 AFTER `Regionid` (在哪个字段后面添加) 删除字段: alter table `user_movement_log` drop column Gatewayid 调整字段顺序: ALTER TABLE `user_movement_log` CHANGE `GatewayId` `GatewayId` int

asp创建表,复制表 字段类型附录_应用技巧

在已有数据库中创建表  <% set conn=server.CreateObject("adodb.connection")  sql="provider=microsoft.jet.oledb.4.0;data source="&server.MapPath("BOOK.mdb")  conn.open sql  Conn.Execute("create table bbb(id AUTOINCREMENT(1,1),

Mysql数据库Char和Varchar字段类型长度的选择比较

  网上有很多关于char和varchar的相关比较,但是都历史悠久,这里转载一篇信息比较新的,个人认为对我的设计字段决定帮助很大. 现代数据库一般都支持CHAR与VARCHAR字符型字段类型,CHAR是用来保存定长字符,存储空间的大小为字段定义的长度,与实际字符长度无关,当输入的字符小于定义长度时最后会补上空格.VARCHAR是用来保留变长字符,在数据库中存储空间的大小是实际的字符长度,不会像CHAR一样补上空格,这样占用的空间更少. 从以上特点来看,VARCHAR比CHAR有明显的优势,因此

请教mysql日期字段类型设置与C#DataTable配合的问题

问题描述 在mysql中有日期字段,我设置该字段类型为DateTime时,在C#执行查询并写入DataTable时,报错误:该字符串未被识别为有效的DateTime.该字段的值为:2014/8/2014:38:09,也尝试将/改为-,都一样报错.报错的语句为:CurrlicTatatable=db.ExecuteDataTable(sqlinfo,null);经验证,sql语句没有错误,主要问题出在字段类型的设置上.现向各位大神请教mysql中的时间字段正确设置. 解决方案 解决方案二:不用拼接

ORACLE MYSQL中join 字段类型不同索引失效的情况

关于JOIN使用不同类型的字段类型,数据库可能进行隐士转换,MYSQL ORACLE都是如此, 下面使用一个列子来看看,脚本如下: mysql: drop table testjoin1; drop table testjoin2; create table testjoin1(id int, name varchar(20)); create table testjoin2(id varchar(20),name varchar(20),key(id); oracle: drop table

MySQL主键设计

原文:MySQL主键设计 [TOC] 在项目过程中遇到一个看似极为基础的问题,但是在深入思考后还是引出了不少问题,觉得有必要把这一学习过程进行记录. MySQL主键设计原则 MySQL主键应当是对用户没有意义的. MySQL主键应该是单列的,以便提高连接和筛选操作的效率 永远也不要更新MySQL主键 MySQL主键不应包含动态变化的数据,如时间戳.创建时间列.修改时间列等 MySQL主键应当有计算机自动生成. 主键设计的常用方案 自增ID 优点: 1.数据库自动编号,速度快,而且是增量增长,聚集