mysql 字段类型优化_mysql性能优化(1)——mysql数据类型优化

当数据库中的数据大量增加的时候,索引的效率就会降低。因此,通常的优化就是减少数据库中关键表的记录数目来提高性能。实际上,选择恰当的数据类型也可以减少系统I/O资源的消耗,而且能提高数据库操作中经常用到的比较运算的性能,从而提高数据库系统的性能。

数据库的类型优化的原理:

"小"的数据类型减少存储空间,使用查询时减少IO资源的消耗

通过合适的数据类型加快比较

根据数据库类型优化的原理,可以得出优化的基本原则:

数据类型通常越小越好

数据类型要相对简单,如整型比字符简单

尽可能不用null值(这个对性能的提升很有限,除非经分析null值的确引起了问题,否则不必刻意优化)

平常的数据库字段类型一般就是数字、日期时间和字符型

1.   整型

最常用的数据类型,分为有符号数和无符号数,它们的性能是一样的。

整数int在运算时一般会转化为64位的big int,一些聚合函数除外。

整型最优先考虑的类型。

IP一般保存成这个类型,mysql有inte_aton()和inet_ntoa()  在ip和整数之间进行转  换。

2.   实数

主要是DOUBLE,FLOAT,DECIMAL这三种

这三种数据类型都太不常用,浮点类型的运算依赖于底层平台。浮点数有精度问题,在一些对精度无要求的地方使用,当对于精度有要求的地方,往往依靠乘以一个固定系数来转换成为整型数据存放,而且可以解决精度问题,数据处理更高效。

DECIMAL可以保存比INT更大的整数,它的运算是mysql服务自身进行的,性能要差于浮点数,但是可以保存精确的数值,能保存金额等精确数字。但因为大多数情况下,它也能转化成整型存储,所以用得不太多。

3.   字符

VARCHAR类型是可变长的,它在更新的时候会引起额外的操作。而且根据不同的引擎处理这种行的长度可变的情况的方法是不一样的:MyISAM会拆开行,InnoDB则会进行分页。所以,使用VARCHAR类型的条件是:最大长度远远大于平均长度,而且很少更新。

CHAR在存储很短的字符串或者长度近似的字符串时很有用。例如用户的密码的md5值。对于经常修改的,也要优先考虑char类型。

BLOB和TEXT

在进行排序的时候,MEMORY表是不支持这两个类型的,所以,尽量使用order by substring(col,length)进行排序,不要直接order by,否则系统将会建立MyISAM的临时表,存储在外存,而且系统开销很大。

注意BLOB和TEXT还要受到客户端与服务器端的网络通信缓冲区最大值的限制。

3.   TIMESTAMP和DATETIME

TIMESTAMP表示的时间范围比DATETIME小一些,如果在这个时间范围内,尽量用TIMESTAMP,因为它占空间更小一些。

4.  BIT类型

尽量避免,如果要保存多组true/false的值,可以使用整型,用每一位表示true或false,用位操作来进行存取。

主键类型的选择

推荐使用整型,性能较好,可以使用auto_increment,最好不要用字符做主键,尤其是MyISAM。

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-10-21 21:19

浏览 620

分类:数据库

评论

1 楼

liberD

2010-10-21

不错!整理的很棒!希望继续加油啊!O(∩_∩)O哈哈~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值