数据库设计(4)_逻辑结构设计_常用技巧

总结一下这些年在项目中一些设计技巧,有些在前面的章节已经提到过。

 

一、属性定义

1.1、数据类型

1)整型还是字符型

在可以为整型的情况下尽量使用整型,通常情况下整型占的空间小,可以提高I/O及缓存命中率。

 

2)定长还是变长字符型

 

定长的好处(也就是变长的坏处):

a)定长字段不需要额外维护和计算行偏移量,当然这个成本不是很大,可以忽略;

b)如果用变长的话,很有可能会由于更新行数据而带来页拆分,这个成本是很大的;

 

变长的好处:

节省存储空间,可以提高I/O及缓存命中率;

 

那究竟使用定长还是变长呢?规则就是:同一属性列的数据长度有明显差异、且更新不太频繁的情况,使用变长字符,否则建议使用定长字符,比如:订单号、MAC地址,这类长度固定的属性应该毫不犹豫地使用定长。

 

3)数据类型的长度

业务的发展总是会出乎人为意料的,所以不要太小气,在长度不是太大的情况下,大胆去放大数据类型的长度,比如:把smallint(占2字节)改为int(占4字节)。

 

4)数据类型一致性

避免出现:同一个字段,在A表中为整型,在B表中为字符型,保证数据类型的一致。

 

1.2NULL

建议将所有列都设为not null,原因如下:

1)记录中存在允许为null的列时,每次都在读取该行时都需要去检查null列是否有值;

2)索引中不会记录null值,因为这个值根本不存在,所有无论单表还是多表的查询中,is null/is not null无法使用索引,关于索引的使用可参见《SQL Server 查询优化(3_索引的设计与使用》;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值