在数据库表中存储整数或字符串之间的区别

Vic*_*tor 5 database database-design

我关注性能,工程和可读性.假设我有一个博客,每个帖子都有其状态:已发布(4),待审核(2),草稿(1).建议将这些信息存储在status列中?

status        <======= storing status as string
========
pending
published
draft

status        <======= storing status as integer
========
2
4
1
Run Code Online (Sandbox Code Playgroud)

另外,如果我们应该存储整数,我们应该避免存储运行的整数:1, 2, 3, 4, 5,而不是存储^ 2整数:2, 4, 8, 16, 32

非常感谢.

Mik*_*ll' 8

我认为,对于更快的性能,更少的存储空间和可读性,最好的选择是使用CHAR(1) - (p)ublished,pending(r)eview和(d)raft.您可以使用CHECK约束或外键引用来验证该数据.

CHAR(1)占用的空间比整数少得多.它可以被人类直接读取,因此它不需要连接来理解它.由于它既小又可立即读取,即使在数千万行的表上,您也可以获得比整数上的连接更快的检索.