2012-06-22 42 views
0

我正在使用一个相当古老的使用MySQL作为数据库的Web应用程序。 90%的表是MyISAM,大部分它们的外键没有索引。添加没有外键约束的索引性能提升

我正在考虑将整个事情移植到InnoDB,所以我可以应用外键约束等。然而,由于该应用程序比较陈旧,有点匪夷所思,它一直依靠代码来强制引用完整性,我担心在数据库中进行这种更改可能会导致多次代码失败。我没有时间去浏览整个代码库,并确保一切都按照它的设想进行,我没有理由怀疑它不是我只意识到添加引起意外的外键约束的可能性的问题。

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

+1

mysql已经在外键字段上自动创建索引。你只是双重索引。 –

回答

1

是的,只是加上指标应该会给你几乎相同的性能提升。外键约束更多的是参照完整性而不是性能。

在某些情况下,添加这些约束可以帮助数据库引擎构建更高效的执行计划;但这是一个小问题,与将无目标指标添加到无索引数据库的好处相比。