这个问题是针对有经验的开发人员的。
我的朋友最近告诉我,他的雇主有一个遗留代码库,其 MySQL 数据库的大小现在已经增长到 800 GB 左右。有趣的是,很少有外键约束,导致一些重复的坏数据,但由于这不会损害任何东西(显然),没有人会过度担心。
现在我无法想象没有外键的生活,所以当我问他为什么没有这样的检查时,他回答说外键是数据库必须维护的另一个索引,占用更多空间。
是的,空间。所以这是我的问题:索引可以占用多少空间?10% 的数据库?20%?即使他的推理是错误的,不可否认外键会导致性能下降。作为一名开发人员,一旦数据库大小接近 1 TB,您会放弃外键,而是依靠代码来进行适当的内务处理吗?