0

我正在使用一个相当旧的 Web 应用程序,它使用 MySQL 作为数据库。90% 的表是 MyISAM,它们的外键大部分没有索引。

我正在考虑将整个事情移植到 InnoDB,这样我就可以应用外键约束等。然而,由于应用程序很旧而且有点笨拙,它一直依赖代码来强制执行参照完整性,我担心在数据库中进行这种更改可能会导致多个代码失败。我没有时间浏览整个代码库并确保一切都按预期进行,我没有理由怀疑它不是我只是意识到添加外键约束的可能性导致不可预见问题。

我在想另一种方法可能是简单地在外键字段上添加索引而不创建约束。我认为这将提高性能,而不会损害现有功能。谁能告诉我是否有理由不这样做?这样做会获得与添加索引和外键约束相同的性能提升吗?

4

1 回答 1

1

是的,只需添加索引就可以为您带来几乎相同的性能提升。外键约束更多地是为了参照完整性而不是性能。

在某些情况下,添加这些约束有助于 DB 引擎构建更有效的执行计划;但与将目标明确的索引添加到无索引数据库的好处相比,这是一个次要考虑因素。

于 2012-06-22T17:46:31.383 回答