在数据库中存储枚举类型有两种方法:作为字符串或作为整数。
将枚举 ( sex = {male,female}
, account_type = {regular,pro,admin}
, 等 ) 保存为字符串可以使内容更具可读性,但比整数需要更多空间。
另一方面,整数需要将枚举映射进出数据库。作为一个好处,区分大小写是在数据库之外用整数处理的。
假设两者都被索引,那么进行整数转换通常值得吗?使用整数查找要快多少?
例子
也许一个具体的例子可以帮助可视化事物。让我们将上面的 account_type 与 100,000 个用户的数据库一起使用。
字符串枚举
假设 8 位固定长度 CHAR 类型
7*100000*8/8 = 700000 bytes
整数枚举
假设 8 位 TINYINT 整数
100000*8/8 = 400000 bytes
似乎大小几乎是整数枚举的一半。还需要考虑索引。