建表优化

上一个模块中,我们分别从快速原型设计、对初级架构设计进行优化这两方面进行了体育赛事竞猜网站的原型与架构设计。在本模块中,我们将从网站建表优化这一方面进行介绍。

4 建表优化

4.1 建表误区

在一些项目中,常会有人对数据库中的表建的很随意,不考虑使用场景与网站在实际操作中的各种情况。假设我们体育赛事竞猜网站中的用户表 db_user,现在这个表要存放:

  • 用户 ID;
  • 用户名称;
  • 密码;
  • 邮箱;
  • 手机;

我们举一个常见的反例:除了 ID 其他一律 varchar(255)。虽然利用上边的表我们也可以正确的存储数据,但是从性能上来说就差很多了。

4.2 建表原则

怎样建表才是正确的呢?我们先来介绍一个开发中的建表原则:

  • 开发中往往把频繁用到的数据,存放到一张表,优先考虑效率;
  • 不是常用的数据,存放到辅助表,更多地考虑节约空间;
  • 对于常用的需要关联的数据,在需要的时候也会做冗余设计,提高检索速度,牺牲空间减少时间。

那么有一个问题,什么样的数据查询效率高呢?

  • 计算机底层是二进制传输的,所以越贴近底层的数据类型效率越高,比如 int 类型的性能就远远比 varchar 类型的高,检索起来快;
  • 定长的数据类型的检索要比变长的数据类型的要快,但相对来说也会牺牲一定的空间进行存储。

在本模块中,我们分别从建表误区、建表原则两个部分介绍了如何进行网站建表优化。在下一个模块中,我们将会从技术栈的角度出发,介绍网站的前后端开发,敬请期待!