gpt4 book ai didi

mysql - 插入 ID 号而不是使用 Enum 类型 - 查询会变慢多少?

转载 作者:行者123 更新时间:2023-11-29 23:23:14 26 4
gpt4 key购买 nike

抱歉我的英语(我从意大利发帖)并且(如果可能的话)用简单的语言回答我(谢谢)

我想让你知道我不是一个专业的程序员:我只是一个编程爱好者。

问题是这样的:我将创建一个包含四个字段的表,其中包含 6、20、165 的重复项和大约 500 个可能的值(全部为 10 到 50 之间的 varchar)。

我的第一个想法是使用四个只有一个字段(主键)的表和四个一对多关系。

后来我读到了有关 Enum 类型数据的内容,并寻找一种使用此解决方案的方法(因为我认为使用所有这些 varchar 会吸收很多字节)。

我已经阅读了很多关于Enum类型的优点和缺点的网页,但我仍然有很多疑问。

我对枚举类型的问题是:1)我不需要空字符串(所以我必须通过在严格模式下工作来避免任何插入错误);2)我担心枚举与其他数据之间的关联可能会发生变化(例如,如果枚举值消失并且我需要将其数据拆分为其他数据)

所以,我对使用 Enum 感到害怕,我考虑使用第三种解决方案:

考虑到Enum类型使用数组的数字id而不是varchar,我考虑在四个表中插入一个Id列(数字),并将表中的四个Id与数据一起使用而不是字符串值。

现在的问题是:与使用 Enum 提取字符串数据相比,使用第三种方法将需要更加复杂的查询。所以我不知道哪个是节省字节而不浪费提取数据时间的最佳选择。

你能给我一个选择吗?

如何计算行限制,超过该限制查询将变得缓慢?

预先感谢任何愿意帮助我的人。

最佳答案

ENUM类型适合存储少量不应该改变的值。

您的场景非常常见,标准做法是创建四个引用表,每个引用表都有一个 ID 字段和一个字符串值字段,然后将这些 ID 存储在主表中。

定义外键约束可确保数据完整性,并且使用索引,您的查询将会很快,完全不用担心这一点。

查询不会很复杂,只需要四个连接。还可以创建一个 View 以避免在不同查询中重复连接。

此解决方案更加灵活且更易于管理或移植。

关于mysql - 插入 ID 号而不是使用 Enum 类型 - 查询会变慢多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com