mysql 选择优化的数据类型
选择最小的数据类型,因为它们占更少的磁盘,内存和CPU缓存;
选择简单的数据类型,如用整型来存储ip: http://blog.csdn.net/lyd518/article/details/20701099
避免null,因为null会占用存储空间,null在索引列上会使索引更复杂
整数类型
TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT 分别使用8,16,24,32,64 位存储空间;
选择unsigned属性,可以使正数的上限提高一倍;
使不使用unsigned属性,跟性能无关;
int(1)和int(10)对存储和计算来说是相同的,只是规定一些mysql交互工具用来限制显示字符的个数;
实数类型
可以使用DECIMAL存储比BIGINT还大的整数;
CPU不支持DECIMAL直接计算,MYSQL服务器自身实现了DECIMAL的高精度运算,相对而言,CPU直接支持浮点运算,所以浮点运算明显更快;
float占用4个字节,double占用8个字节;
DECIMAL需要额外的空间和计算开销,所以尽量少用它;
DECIMAL可以使用BIGINT代替,把小数乘以数倍存储在BIGINT里面,可以避免浮点存储计算不准确和DECIMAL精度计算代价高的问题;
字符串类型
varchar需要一个或者两个额外的字节记录字符串长度,varchar列的长度小于或等于255个字节需要一个字节,大于255需要两个字节;
varchar 用于存储可变长字符串,它比定长类型更节省空间;
char适合存储很短的字符串,或者所有值都接近同一个长度;
对于经常变更的数据,char比varchar更好,因为定长的char类型不容易产生碎片;
对于存储非常短的列,char存储空间比varchar少,如存储“Y”或"N",采用单字节字符集,char(1)占用一个字节;varchar(1)占用两个字节;
当存储char值时,mysql会删除所有末尾空格,char值会根据需要采用空格进行填充比较;
varchar(5)和varchar(200)存储"hello"的空间开销是一样的。但更长的列会消耗更多的内存,因为mysql通常会分配固定大小的内存块来保存内部值;
BLOB和TEXT类型
BLOB和TEXT分别采用二进制和字符存储;
MYSQL不能将BLOB和TEXT列全部长度字符串进行索引,也不能用这些索引消除排序;
日期和时间类型
MYSQL可以存储的最小时间是秒;
DATETIME能保存大范围的值,从1001年到9999年,精度为秒。它把日期和时间封装到格式为YYYYMMDDHHMMSS的整数中,与时区无关,使用8个字节存储;
默认情况下,MYSQL以一种有顺序,无歧义的格式显示DATETIME值,例如"2014-12-12 12:12:12";
TIMESTAMP 用4个字节存储,和UNIX时间戳相同,它只能表示1970年到2038年,它的显示格式例如"2014-12-12 12:12:12";;
MYSQL提供了FROM_UNIXTIME()函数把UNIX时间戳转换成日期,并提供UNIX_TIMESTAMP()函数把日期转为UNIX时间戳;
TIMESTAMP 依赖于时区;
当插入或修改记录时,如果TIMESTAMP没有指定值,TIMESTAMP默认会保存当前时间;
TIMESTAMP比DATETIME的空间效率更高,尽量选择TIMESTAMP;
可以使用BIGINT存储微妙级别的时间戳,或者使用DOUBLE保留秒之后的小数部分;
特殊类型数据
1.IPv4地址经常被人用varchar(15)来存储,但是它32位无符号的整数,小数点将地址分四段只是为了让人容易阅读,所以整型来存储它,MYSQL用INET_ATON() 和INET_NTOA()用于这两种表示转换;
mysql 选择优化的数据类型的更多相关文章
- (1.1)mysql 选择合适的数据类型
(1.1)mysql 选择合适的数据类型 1.char与varchar [1.1]char 在内容未满定义长度时,做空格填充,且字符串末尾空格会被截断:超出定义长度也会被截断. 如:char(4) ...
- mysql数据库——选择优化的数据类型
选择更小的数据类型:一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,它们占用更少的磁盘.内存和CPU缓存,并且处理时需要的CPU周期也更少.但是要确保没有低估需要存储的 ...
- MySQL选择合适的数据类型
一.char和varchar char是固定长度的,查询速度比varchar速度快的多.char的缺点是浪费存储空间. 检索char列时,返回的结果会删除尾部空格,所以程序需要对为空格进行处理. 对于 ...
- Mysql 选择合适的数据类型
一. char 与 varchar char : 长度固定,所以处理的速度比 varchar 快,但浪费储存空间. varchar : 长度可变,列性能较好.并且平均占用空间少于 char. 因此,选 ...
- MySQL架构优化实战系列1:数据类型与索引调优全解析
一.数据类型优化 数据类型 整数 数字类型:整数和实数 tinyint(8).smallint(16).mediuint(24).int(32).bigint(64) 数字表示对应最大存储位数,如 ...
- MySQL之Schema与数据类型优化
选择优化的数据类型 MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要.不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择: 更小的通常更好一般情况下,应该尽量使用 ...
- MySql性能优化读书比较<一> 数据类型
一,选择优化的数据类型 1.更小的通常更好. 更小的数据类型通常占用更少的磁盘,内存和cpu缓存,通常更快. 2.简单就好 简单的数据类型操作,通常需要更少的CPU周期. 3.尽量避免NULL值 列可 ...
- 深入学习MySQL 03 Schema与数据类型优化
Schema是什么鬼 schema就是数据库对象的集合,这个集合包含了各种对象如:表.视图.存储过程.索引等.为了区分不同的集合,就需要给不同的集合起不同的名字,默认情况下一个用户对应一个集合,用户的 ...
- MySQL 性能优化--优化数据库结构之优化数据类型
MySQL性能优化--优化数据库结构之优化数据类型 By:授客 QQ:1033553122 优化数字数据(Numeric Data) l 对于唯一ID或其它可用字符串或数字表示的值,选择 ...
随机推荐
- FFmpeg在Android上的移植优化步骤
http://blog.csdn.net/feixiang_john/article/details/7894188 从事多媒体软件开发的人几乎没有不知道FFmpeg的,很多视频播放器都是基于FFmp ...
- (转)YUV420存储格式
YUV格式有两大类:planar和packed.对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V.对于packed的YUV格式,每个像素点的Y,U ...
- linux -- ubuntu dash bash
终端:即所谓的命令行界面,又称命令终端,用户输入shell命令用的窗口,跟Windows里的DOS界面差不多. shell:意为“壳”,是操作系统与用户交互用的接口,在命令终端里可以使用shell.s ...
- linux -- ubuntu 何为软件源
新手学Ubuntu的时候,一般不知道什么是源,但源又是Ubuntu下常用到的东西.因此,本文就详细介绍一下Ubuntu 源. 什么是软件源? 源,在Ubuntu下,它相当于软件库,需要什么软件,只要记 ...
- linux -- 注销,关机,重启
注销:logout Logout 注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接下达logout命令即可: [root@localhost root]#logout Red Hat ...
- C++多线程环境下注意共享资源的释放顺序
比如我现在写一个多线程下载程序,包含DownloadTask.HttpDownload两个类. class DownloadTask { //省略n行代码 public: int m_threads; ...
- vnc 多用户登录
1, 创建新用户: $ useradd tom $ passwd tom 2, 登录到tom账户,创建vnc实例: $ su tom$ vncserver 这时可以看看~/.vnc/目录下,有一些如 ...
- 【Java面试题】40 你所知道的集合类都有哪些?主要方法?
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以 ...
- opencv播放视屏并控制位置
原文地址:http://blog.csdn.net/augusdi/article/details/9000592 cvGetCaptureProperty是我们需要使用到的获取视频属性的函数. do ...
- js 动态设置 option 的selected 选项
思路:通过for循环判断每个选项,一旦满足条件则设置其selected属性为true即可,关键代码: var obj = document.getElementById(select_id); for ...