微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用char作为主/外键是不是吗?

如何解决使用char作为主/外键是不是吗?

性能并不是真正的主要问题,至少对我而言不是。问题更多是关于代理与自然键。

国家/地区代码不是静态的。他们可以而且确实会改变。国家将名称更改(例如,埃塞俄比亚改为厄立特里亚)。它们应运而生(例如南斯拉夫或苏联解体)而不再存在(例如西德和东德)。发生这种情况时,ISO标准代码会更改。

自1990年以来的更多名称更改:国家,城市等

代理键往往会更好,因为当这些事件发生时,键不会更改,只有引用表中的列会更改。

因此,我更倾向于使用int主键创建国家和货币表。

话虽如此,varchar关键字段将占用更多空间,并具有某些性能劣势,除非您要执行大量查询,否则可能不会成为问题。

解决方法

考虑有一堆表链接到“国家”或“货币”表。

为了使数据更易于阅读,我希望将带有国家/地区代码(例如美国,GB,AU)和货币代码(USD,AUD)的CHAR字段作为这两个表中每个表的主键,所有其他表都将使用此CHAR作为前键。

数据库是带有innodb引擎的mysql。

这会导致性能问题吗?这是我应该避免的事情吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。