四.数据库结构优化

一.选择合适的数据类型

  • 1.使用可以存下你的数据的最小的数据类型
  • 2.使用简单的数据类型.Int要比varchar类型在mysql处理上简单
  • 3.尽可能的使用not null定义字段
  • 4.尽量少用text类型,非用不可时最好考虑分表

举例:
①使用int类型存储日期时间,利用from_unixtime(),unix_timestamp()两个函数来进行转换

create table test(
id int auto_increment not null,
timestr int,
primary key(id)
);
insert into test(timestr) values(unix_timestamp('2014-06-01 12:23:00'));

②使用bigint来存储IP地址,利用inet_aton(),inet_ntoa()两个函数来进行转换

create table sessions(
id int auto_increment not null,
ipaddress bigint,
primary key(id));
insert into sessions(ipaddress) values(inet_aton('192.168.0.1'));
select inet_ntoa(ipaddress) from sessions;

二.范式化

所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性.

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分

满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息

三.反范式化

四.表的垂直拆分

解决:表的宽度问题(及字段非常多)
定义:把原来一个有很多列的表拆分成多个表.
通常垂直拆分可以按以下原则进行:
1.把不常用的字段单独存放到一个表中.
2.把大字段独立存放到一个表中.
3.把经常一起使用的字段放到一起.

五.表的水平拆分

解决:数据量过大
定义:把原来的数据量非常大的表水平拆分多个表,每个表中的字段都是一样的.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值