我正在使用一个使用MySQL作为数据库的相当古老的Web应用程序。 90%的表都是MyISAM,它们的外键大部分都没有索引。
我正在考虑将整个内容移植到InnoDB,以便我可以应用外键约束等。然而,由于应用程序已经过时且有点笨拙,因此一直依赖代码来强制执行参照完整性,我担心在数据库中进行此更改可能会导致多个代码失败。我没有时间完成整个代码库并确保一切都按预期进行,我没有理由怀疑它不是我只是意识到添加外键约束的可能性导致无法预料的问题。
我在想另一种方法是简单地在外键字段上添加索引而不创建约束。我认为这样可以提高性能,而不会有损坏现有功能的风险。谁能告诉我是否有理由不这样做?我是否会像添加索引和外键约束一样获得相同的性能提升?
答案 0 :(得分:1)
是的,只是添加索引应该会给你几乎相同的性能提升。外键约束更多的是引用完整性而不是性能。
在某些情况下,添加这些约束有助于数据库引擎构建更高效的执行计划;但与将无目标索引添加到无索引数据库的好处相比,这是次要考虑因素。