【发布时间】:2011-07-18 11:11:45
【问题描述】:
在数据库中存储枚举类型有两种方法:作为字符串或作为整数。
将枚举(sex = {male,female}、account_type = {regular,pro,admin} 等)保存为字符串会使内容更具可读性,但比整数需要更多空间。
另一方面,整数需要将枚举映射进出数据库。作为一个好处,区分大小写是在数据库之外使用整数处理的。
假设两者都被索引,那么进行整数转换通常值得吗?查找整数的速度有多快?
示例
也许一个具体的例子可以帮助将事物形象化。 让我们使用包含 100,000 个用户的数据库的上述 account_type。
字符串枚举
假设 8 位定长 CHAR 类型
7*100000*8/8 = 700000 bytes
整数枚举
假设 8 位 TINYINT 整数
100000*8/8 = 400000 bytes
似乎大小几乎是整数枚举的一半。还需要考虑索引。
【问题讨论】:
标签: sql enums database-agnostic