MySQL选择合适的数据类型
一。char和varchar
char是固定长度的,查询速度比varchar速度快的多。char的缺点是浪费存储空间。
检索char列时,返回的结果会删除尾部空格,所以程序需要对为空格进行处理。
对于长度变化不大且对查询速度有较高要求的数据可以考虑使用char。
随着MySQL的不断升级,varchar的性能不断改进并提高。
存储引擎使用原则:
MyISAM:建议使用固定长度列代替可变长度列。
InnoDB:建议使用varchar类型
二。text和blob
在保存大文本时,通常选择text或者blob。
二者的差别是blob可以保存二进制数据,比如照片。
text和blob又包括text、mediumtext、longtext和blob、mediumblob、longblob,他们之间的区别是存储文本长度不同和存储字节不同。
应根据情况选择满足需求的最小存储类型。
1.blob和text执行大量删除操作时,产生数据“空洞”

删除id为7记录前后数据库所占内存,没有发生变化。


可以发现数据文件并没有因为数据删除而减少。
对表进行optimize(优化)操作:
optimize table t1;

可以发现表数据文件大大缩小,“空洞”空间已经被回收。
2.用合成(Synthetic)索引提高查询性能
根据大文本字段(text、blob)的内容建立一个散列值,并把这个值存储在单独的数据列中,然后通过散列值找数据行。
缺点:只能进行精确查询(<、>=范围操作符是没有用处的)
可以通过MySQL自带函数md5()、sha1()、crc32()生成散列值,也可以通过编程语言计算散列值。
注:如果散列算法生成的字符串带有尾部空格,不要把他们存储在char、varchar列中,他们会受到尾部空格去除的影响。

如果需要对blob或clob字段进行模糊查询,可以用前缀索引:
#前缀索引:对context字段的前100个字符创建索引
create index idx_blob on t2(context(100));
#查询方法
select * from t2 where context like 'drake%';
注:%不能放在最前面
合成索引只能用于精确匹配,在一定程度上减少了I/O,从而提高了查询效率。
3.在不必要的时候避免检索大型的blob或text值。
4.把blob或text列分离到单独的表中。
三、浮点数和定点数
1.浮点数存在误差问题。
2.对货币等对精度敏感的数据,应该用定点数表示或存储。
3.在编程中,如果用到浮点数,要特别注意误差问题,并尽量避免做浮点数比较。
4.要注意一些特殊值的处理。
四、日期类型的选择
1.根据实际需要选择能够满足应用的最小存储日期类型。
2.如果记录年月日时分秒,并且记录年份比较久远,最好使用datetime,不要使用timestamp。
3.如果记录的日期需要让不同时区的用户使用,最好使用timestamp,因为日期类型中只有它能够和实际时区相对应。
MySQL选择合适的数据类型的更多相关文章
- (1.1)mysql 选择合适的数据类型
(1.1)mysql 选择合适的数据类型 1.char与varchar [1.1]char 在内容未满定义长度时,做空格填充,且字符串末尾空格会被截断:超出定义长度也会被截断. 如:char(4) ...
- Mysql 选择合适的数据类型
一. char 与 varchar char : 长度固定,所以处理的速度比 varchar 快,但浪费储存空间. varchar : 长度可变,列性能较好.并且平均占用空间少于 char. 因此,选 ...
- Design6:选择合适的数据类型
数据库使用Table来存储海量的数据,细分Table结构,数据最终存储在Table Column中,因此,在设计Table Schema时,必须慎重选择Table Column的Data Type,数 ...
- 为MySQL选择合适的备份方式
数据库的备份是极其重要的事情.如果没有备份,遇到下列情况就会抓狂: UPDATE or DELETE whitout where… table was DROPPed accidentally… IN ...
- 为MySQL选择合适的备份方式[转]
原文链接:http://nettedfish.sinaapp.com/blog/2013/05/31/choose-suitable-backup-strategy-for-mysql/ 数据库的备份 ...
- mysql 选择优化的数据类型
选择最小的数据类型,因为它们占更少的磁盘,内存和CPU缓存: 选择简单的数据类型,如用整型来存储ip: http://blog.csdn.net/lyd518/article/details/2070 ...
- MySql中varchar和char,如何选择合适的数据类型?
背景 学过MySQL的同学都知道MySQL中varchar和char是两种最主要的字符串类型,varchar是变长的类型,而char是固定长度.那关于如何选择类型就成为令人头疼的事,很多初学者为了保证 ...
- mysql如何选择合适的数据类型1:CHAR与VARCHAR
CHAR和VARCHAR类型类似,都用来存储字符串,但它们"保存"和"检索"的方式不同.CHAR属于"固定长度"的字符串,而VARCHAR属 ...
- mysql 开发基础系列12 选择合适的数据类型(上)
一. char 与varchar比较 在上图的最后一行的值只适用在"非严格模式",关于严格模式后面讲到.在“开发基础系列4“ 中讲到CHAR 列删除了尾部的空格.由于char是固定 ...
随机推荐
- HttpClient (POST GET PUT)请求
HttpClient (POST GET PUT)请求 package com.curender.web.server.http; import java.io.IOException; import ...
- SQL 基础
创建模式 create schema <schema_name> authorization <username> 没有指定schema_name时默认是用户名 删除模式 dr ...
- [Sass]局部变量和全局变量
[Sass]局部变量和全局变量 Sass 中变量的作用域在过去几年已经发生了一些改变.直到最近,规则集和其他范围内声明变量的作用域才默认为本地.如果已经存在同名的全局变量,从 3.4 版本开始,Sas ...
- monkey之三:monkey测试测略(摘抄)
一.分类 Monkey测试针对不同的对象,不同的目的,采用不同的测略方案. 测试类型分为: 应用程序的稳定性测试和压力测试 测试对象分为: 单个APK和多个APK集合 测试目的分为: 解决问题的测试( ...
- JavaScript 学习笔记——cssText
平常编写代码,更改一个元素样式的时候,自己都是用 obj.style.width = "200px"; obj.style.position = "absolute&qu ...
- gloolooer
V1.2gloolooer金[http://sh.yun.ftn.qq.com/ftn_handler/0a9043ee7aa120d3c864281211dff2f08efe5e2d42438ec5 ...
- MongoDB安装并随windows开机自启
MongoDB的官方下载站是http://www.mongodb.org/downloads,可以去上面下载最新的程序下来.在下载页面可以看到,对操作系统支持很全面,OS X.Linux.Window ...
- wap支付宝接口的问题
今天在支付宝接口开发时,遇到的两个坑 第一个: https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.8nHr4i& ...
- 2016年6月20日 JAVA知识框架
基于 J2EE 列举的知识架构,大体列举开发基础知识.帮助我随时查缺补漏,奉行好记性不如烂笔头.写了这该随笔,以便后续查询. 1 JAVA简介 2 JAVA编程环境 3 JAVA基本编程结构 4 ...
- windows C++实现注销、重启、关机 logoff reboot shutdown
实现这一功能很简单,主要需要调用一个系统API ExitWindowsEx 功能就是,注销当前用户,关闭系统,或者重新启动系统. 它会发送一个WM_QUERYENDSESSION消息给所有的应用程序, ...