database - 哪个更好-在 MYSQL 中将值存储为数字 VS 实际值?

标签 database

哪个更好 - 在 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/

相关文章:

sql - PostgreSQL:为什么我可以连接到具有设置密码的用户而无需提供密码?

asp.net-mvc - 我可以将配置从 appsettings.json 移动到 ASP.NET Core MVC 应用程序中的数据库吗?

mysql - 对不属于表的元素进行排序

php - 为什么即使应该更新一条记录,mysql_affected_rows 也会返回 0

mysql - Sql查询中的重复结果

MySql SELECT 通过拆分由 || 分隔的多个值

database - node.js 存储数据的一些问题

database - GiST 索引到底是如何工作的?

mysql - 如何从mysql数据库中删除文件

sql 获取日期中的特定时间