建表案例,某高端白领私密社交网站
主键id | 用户名 | 性别 | 体重(KG) | 生日 | 工资 | 上次登陆 | 个人简介 |
Int | Username | gender | weight | birth | salary | Lastlogin | intro |
列名称 | 列类型 | 默认值 | 是否主键 |
Id | Int unsigned | PRI | |
Username | Varchar(20) | '' | |
gender | Char(1) /tinyint | ||
weight | Tinyint unsigned | ||
Birth | Date | ||
Salary | Decimal(8,2) | ||
lastlogin | Datetime | ||
intro | Varchar(1500) |
这张表不够好,可以优化
分析:这张表除了username/intro列之外,每一列都是定长的.
我们不妨让其所有列,都定长,可以极大提高查询速度.
列名称 | 列类型 | 默认值 | 是否主键 |
Id | Int unsigned | PRI | |
Username | char(20) | '' | |
gender | Char(1) /tinyint | ||
weight | Tinyint unsigned | ||
Birth | Date | ||
Salary | Decimal(8,2) | ||
lastlogin | Int unsigned |
Username char(20) 是会造成空间的浪费,但是提高的速度,值.
Intro char(1500) 却浪费的太多了,另一方面,人的简介,一旦注册完,改的频率也并不高.
我们可以把 intro列单独拿出来,另放一张表里.
列名称 | 列类型 | 默认值 | 是否主键 |
Id | Int unsigned | PRI | |
Username | char(20) | '' | |
intro | Varchar(1500) |
在开发中,会员的信息优化往往是 把频繁用到的信息,优先考虑效率,存储到一张表中.
不常用的信息和比较占据空间的信息,优先考虑空间占用,存储到辅表中.