数据库设计优化

字段长度选择够用就好,越小越好。能用数值类型尽量使用数值类型,如果不需要用到变长类型的话,那么就统一采用char型。

 

TINYINT一般用于存储性别、是与否、用户状态之类等少数可选项(不建议使用enum枚举类型,扩展只能更改表的字段类型或ONLINE DDL、动作很大)

 

INT UNSIGNED可用于存储UNIX时间戳、IPV4地址(内置INET_ATON/INET_NTOA快速转换)

 

使用float时,一定要指定精度(alter table t6 modify num float(5,2)

 

对于VARCHAR数据类型来说,硬盘上的存储空间虽然都是根据实际字符长度来分配存储空间的,但是对于内存来说,则不是。其实使用固定大小的内存块来保存值。

 

timestamp4个字节,在5.6.4之后,datetime变为5个字节了,但范围却比timestamp大很多,所以在5.6中,还是建议使用datetime类型。

 

InnoDB每一个表都要显式设置主键。

 

主键越短越好,最好是自增类型,且由一个字段构成

 

字段属性尽量都加上NOT NULL约束,可一定程度提高性能;

1、浪费存储空间,因为InnoDB需要有额外一个字节存储;

2、表内默认值NULL过多会影响优化器选择执行计划。

 

尽可能不使用TEXT/BLOB类型,像图片、文件等大数据就不要存放在数据库中了,确实需要的话,建议拆分到子表中,不要和主表放在一起

 

SELECT语句前放上关键词EXPLAINMySQL将解释它如何处理SELECT,提供有关表如何联接和联接的次序.

 

删除表中的所有数据,使用truncate table才是王道,比使用delete一行行删除数据要快得多,特别是清空大数据的表.

 

DDL通常是指添加、修改或删除表字段,添加索引等,这类操作通常是会直接锁表,导致大量的业务阻塞,甚至数据库宕机,尤其是添加索引操作

 

SET LOW_PRIORITY_UPDATES=1语句指定具体连接中的所有更新使用低优先级

 

可以使用 LOCK TABLES 来提高速度,因为在一个锁定中进行许多更新比没有锁定的更新要快得多.

 

索引优化

 http://blog.csdn.net/b2222505/article/details/78234666

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值