哪个更好 - 在 MYSQL 中将值存储为数字与实际值?
最佳答案
三种选择:ENUM
(1-2字节),TINYINT
(1字节),VARCHAR
(1+n字节) .各有优缺点。
如果将有数百万行,则 VARCHAR
会消耗空间。
如果允许值的列表经常改变,ENUM
需要执行ALTER TABLE
。 OTOH,如果您遵守限制,它可能是最快和最少干扰的 ALTER
。
representation 3 choices的表现差不多;别担心。
我不会制作一个包含超过几十个值的 ENUM
;这太笨重了,尽管它仍然适合 1 个字节(最多 255 个值)。
它们中的任何一个都可以被索引。但是,优化器很少会使用包含“低基数”列的单列索引。 OTOH,“复合”索引通常是有益的。
传统上,“男性”和“女性”只有两个值。但现在您可能需要“拒绝声明”、“未知”和许多其他值。
如果您正在谈论“国家代码”,那么只需使用 CHAR(2) CHARACTER SET ascii
并使用 US、ES、AR、NZ、RU 等。 CHAR
优先于其他注意事项。 Y/N 是另一个例子,其中 CHAR
可能是最好的。
当使用 ENUM
时,我喜欢以 unknown
作为第一个值,然后说 NOT NULL
。
关于database - 哪个更好-在 MYSQL 中将值存储为数字 VS 实际值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51913138/