1. 选择最小的数据类型,因为它们占更少的磁盘,内存和CPU缓存;

  2. 选择简单的数据类型,如用整型来存储ip: http://blog.csdn.net/lyd518/article/details/20701099

  3. 避免null,因为null会占用存储空间,null在索引列上会使索引更复杂

整数类型

  1. TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT 分别使用8,16,24,32,64 位存储空间;

  2. 选择unsigned属性,可以使正数的上限提高一倍;

  3. 使不使用unsigned属性,跟性能无关;

  4. int(1)和int(10)对存储和计算来说是相同的,只是规定一些mysql交互工具用来限制显示字符的个数;

实数类型

  1. 可以使用DECIMAL存储比BIGINT还大的整数;

  2. CPU不支持DECIMAL直接计算,MYSQL服务器自身实现了DECIMAL的高精度运算,相对而言,CPU直接支持浮点运算,所以浮点运算明显更快;

  3. float占用4个字节,double占用8个字节;

  4. DECIMAL需要额外的空间和计算开销,所以尽量少用它;

  5. DECIMAL可以使用BIGINT代替,把小数乘以数倍存储在BIGINT里面,可以避免浮点存储计算不准确和DECIMAL精度计算代价高的问题;

字符串类型

  1. varchar需要一个或者两个额外的字节记录字符串长度,varchar列的长度小于或等于255个字节需要一个字节,大于255需要两个字节;

  2. varchar 用于存储可变长字符串,它比定长类型更节省空间;

  3. char适合存储很短的字符串,或者所有值都接近同一个长度;

  4. 对于经常变更的数据,char比varchar更好,因为定长的char类型不容易产生碎片;

  5. 对于存储非常短的列,char存储空间比varchar少,如存储“Y”或"N",采用单字节字符集,char(1)占用一个字节;varchar(1)占用两个字节;

  6. 当存储char值时,mysql会删除所有末尾空格,char值会根据需要采用空格进行填充比较;

  7. varchar(5)和varchar(200)存储"hello"的空间开销是一样的。但更长的列会消耗更多的内存,因为mysql通常会分配固定大小的内存块来保存内部值;

BLOB和TEXT类型

  1. BLOB和TEXT分别采用二进制和字符存储;

  2. MYSQL不能将BLOB和TEXT列全部长度字符串进行索引,也不能用这些索引消除排序;

日期和时间类型

  1. MYSQL可以存储的最小时间是秒;

  2. DATETIME能保存大范围的值,从1001年到9999年,精度为秒。它把日期和时间封装到格式为YYYYMMDDHHMMSS的整数中,与时区无关,使用8个字节存储;

  3. 默认情况下,MYSQL以一种有顺序,无歧义的格式显示DATETIME值,例如"2014-12-12 12:12:12";

  4. TIMESTAMP 用4个字节存储,和UNIX时间戳相同,它只能表示1970年到2038年,它的显示格式例如"2014-12-12 12:12:12";;

  5. MYSQL提供了FROM_UNIXTIME()函数把UNIX时间戳转换成日期,并提供UNIX_TIMESTAMP()函数把日期转为UNIX时间戳;

  6. TIMESTAMP 依赖于时区;

  7. 当插入或修改记录时,如果TIMESTAMP没有指定值,TIMESTAMP默认会保存当前时间;

  8. TIMESTAMP比DATETIME的空间效率更高,尽量选择TIMESTAMP;

  9. 可以使用BIGINT存储微妙级别的时间戳,或者使用DOUBLE保留秒之后的小数部分;

特殊类型数据

1.IPv4地址经常被人用varchar(15)来存储,但是它32位无符号的整数,小数点将地址分四段只是为了让人容易阅读,所以整型来存储它,MYSQL用INET_ATON() 和INET_NTOA()用于这两种表示转换;

mysql 选择优化的数据类型的更多相关文章

  1. (1.1)mysql 选择合适的数据类型

    (1.1)mysql 选择合适的数据类型 1.char与varchar [1.1]char 在内容未满定义长度时,做空格填充,且字符串末尾空格会被截断:超出定义长度也会被截断.  如:char(4)  ...

  2. mysql数据库——选择优化的数据类型

    选择更小的数据类型:一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,它们占用更少的磁盘.内存和CPU缓存,并且处理时需要的CPU周期也更少.但是要确保没有低估需要存储的 ...

  3. MySQL选择合适的数据类型

    一.char和varchar char是固定长度的,查询速度比varchar速度快的多.char的缺点是浪费存储空间. 检索char列时,返回的结果会删除尾部空格,所以程序需要对为空格进行处理. 对于 ...

  4. Mysql 选择合适的数据类型

    一. char 与 varchar char : 长度固定,所以处理的速度比 varchar 快,但浪费储存空间. varchar : 长度可变,列性能较好.并且平均占用空间少于 char. 因此,选 ...

  5. MySQL架构优化实战系列1:数据类型与索引调优全解析

    一.数据类型优化 数据类型 整数   数字类型:整数和实数 tinyint(8).smallint(16).mediuint(24).int(32).bigint(64) 数字表示对应最大存储位数,如 ...

  6. MySQL之Schema与数据类型优化

    选择优化的数据类型 MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要.不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择: 更小的通常更好一般情况下,应该尽量使用 ...

  7. MySql性能优化读书比较<一> 数据类型

    一,选择优化的数据类型 1.更小的通常更好. 更小的数据类型通常占用更少的磁盘,内存和cpu缓存,通常更快. 2.简单就好 简单的数据类型操作,通常需要更少的CPU周期. 3.尽量避免NULL值 列可 ...

  8. 深入学习MySQL 03 Schema与数据类型优化

    Schema是什么鬼 schema就是数据库对象的集合,这个集合包含了各种对象如:表.视图.存储过程.索引等.为了区分不同的集合,就需要给不同的集合起不同的名字,默认情况下一个用户对应一个集合,用户的 ...

  9. MySQL 性能优化--优化数据库结构之优化数据类型

    MySQL性能优化--优化数据库结构之优化数据类型   By:授客  QQ:1033553122   优化数字数据(Numeric Data) l   对于唯一ID或其它可用字符串或数字表示的值,选择 ...

随机推荐

  1. C++构造函数后面的冒号

    构造函数后加冒号是初始化表达式:有四种情况下应该使用初始化表达式来初始化成员:1:初始化const成员2:初始化引用成员3:当调用基类的构造函数,而它拥有一组参数时 4:当调用成员类的构造函数,而它拥 ...

  2. 用C结构体来实现面向对象编程,ti xDAIS标准算法就这么搞的(1)

    用C结构体来实现面向对象编程,ti xDAIS标准算法就这么搞的. 测试代码如下: #include <stdio.h> #include <stdlib.h> #includ ...

  3. (转)RGB接口和i80接口的区别

     在嵌入式的主流 LCD屏中主要支持两大类的硬件接口,一种是常见的RGB接口,另外一种是MCU接口.后面因为最早是针对单片机的领域在使用,因此得名.后在中低端手机大量使用,其主要特点是价格便宜的. M ...

  4. jquery load ($.load) 事件用法与分析(转)

    首先我们需要清楚的是jquery load方法是对jQuery.ajax()进行封装以方便我们使用的一个方法,当我们需要处理较为复杂的逻辑时候,还是需要用到jQuery.ajax()这个比较全面的方法 ...

  5. par函数fg参数-控制前景色

    fg参数用来控制前景色,其实指的就是x轴和y轴的轴线和刻度线的颜色 在R语言中,会根据fg, col 任何一个参数的值,自动的将两个参数的值设置为相同的值,举个例子: par(fg = "r ...

  6. 使用C#压缩解压rar和zip格式文件

    为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...

  7. 图片后门捆绑利用工具 – FakeImageExploiter

    在这里,要向大家推荐一款名为“Fake Image Exploiter”的安全工具,该工具可以在图片文件中捆绑隐藏的恶意.bat或.exe程序,方便钓鱼或社工攻击测试过程中的入侵控制.如果受害者点击该 ...

  8. hadoop 安装笔记

    http://www.powerxing.com/install-hadoop/ 查询相关链接~!

  9. select自定义小三角样式

    这段代码是网上大部分的解决办法,在这里总结一下: 让select透明,上面加一个span,来替换select框,可以自定义小三角样式,也可以做出select文字居中的效果. <div class ...

  10. Sprite与屏幕之间的关系

    锚点这东西挺怀念的,N年前我在做J2ME手游的时候.屏幕整体的坐标是左上角是00点.X轴向右递增,Y轴向下递增.所有的image也是这个原理.只是unity的触摸屏坐标不是左上角,而是左下角. 所以这 ...