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或其它可用字符串或数字表示的值,选择 ...
随机推荐
- C++ 判断目录是否存在并新建目录
http://blog.csdn.net/u012005313/article/details/50688257 #include <io.h> #include <string&g ...
- 在安装ZooKeeper之前,请确保你的系统是在以下任一操作系统上运行
在安装ZooKeeper之前,请确保你的系统是在以下任一操作系统上运行: 任意Linux OS - 支持开发和部署.适合演示应用程序. Windows OS - 仅支持开发. Mac OS - 仅支持 ...
- oracle hint inline materialize
当我们使用with的时候,oracle可能会把with里面的结果转换为暂时表.这是仅仅是可能,由于CBO会推断. inline是不转换成暂时表.materialize是强制转换成暂时表. 制造数据 d ...
- CCF - 最大矩形
试题编号: 201312-3 试题名称: 最大的矩形 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n ...
- 【Java 线程的深入研究2】常用函数说明
①sleep(long millis): 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行) ②join():指等待t线程终止. 使用方式. join是Thread类的一个方法,启动线程后直接调用, ...
- php HTML安全过滤
/*HTML安全过滤*/ function _htmtocode($content) { $content = str_replace('%','%',$content); $content = s ...
- oracle用sql 语句如何向表中插入时间?
有关日期的操作中,更多的是涉及系统当前时间,用sysdate表示即可,如果是插入其他非系统时间的日期类型数据的话,用to_date转换再插入就可以了.例: insert into 表(c_date) ...
- Oracle居然把Java EE的未来押在Rest API上了
然而Lehman并不赞同Rahman对Java EE 9的说法,所以他重申Oracle暂时专注于Java EE 8."我们正在倾全力推出EE 8,现在这是我们主要的关注点," ...
- 如何在 React Native 中写一个自定义模块
https://my.oschina.net/jpushtech/blog/983230
- [hibernate]org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter
org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type sette ...