mysql数据库优化--选择合适的数据类型

一、选择数据类型的基本原则
1、Myisam 数据表,最好使用固定长度的数据列代替可变长度数据列
2、InnoDB 建议使用VARCHAR类型 , CHAR平均占用的空间多于VARCHAR,因此使用VARCHAR来最小化需要处理的数据行的存储总量和I/O是比较好的

二、数据列选择
1、 char 与 varchar 建议使用varchar 可变长度保存 节省空间
2、 text 和 blod
a、使用合成的索引
合成的索引列在某些时候是有用的,是根据其它的列的内容建立一个散列值,并把这个值存储在单独的数据列中。我们要注意这种技术只能用于精确匹配的查询,我们可以使用MD5()函数生成散列值,也可以使用SHA1()或CRC32(),或者使用自己的应用程序逻辑来计算散列值。
合成的散列索引对于那些BLOB或TEXT数据列特别有用。用散列标识符值查找的速度比搜索BLOB列本身的速度快很多。
b、在不必要的时候避免检索大型的BLOB或TEXT值。
BLOB或TEXT标识符信息存储在合成的索引列中,可以搜索索引列,决定那些需要的数据行,然后从合格的数据行中检索BLOB或 TEXT值。
c、把BLOB或TEXT列分离到单独的表中。
在某些环境中,把这些数据列移动到第二张数据表中,可以让你把原数据表中 的数据列转换为固定长度的数据行格式,这会减少主表中的碎片,使你得到固定长度数据行的性能优势。它还使你在主数据表上运行 SELECT *查询的时候不会通过网络传输大量的BLOB或TEXT值
d、浮点数与定点数
在 mysql 中 float、double(或 real)是浮点数,decimal(或 numberic)是定点数。
浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的数据范围;
它的缺点是会引起精度问题。
注意一下几点:
a)、浮点数存在误差问题;
b)、对货币等对精度敏感的数据,应该用定点数表示或存储;
c)、编程中,如果用到浮点数,要特别注意误差问题,并尽量避免做浮点数比较;
d)、要注意浮点数中一些特殊值的处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值