2013-04-08 102 views
1

我经常听说索引可以大大提高性能,但有时它们会降低性能。索引如何降低MySQL的性能?

除了只使用内存,它们如何降低性能?

如果我想写时间,以优化对一个给定的表,但不关心读取时间,我会不会使用索引(比PK等)的更好吗?

+0

只需在表中添加几百个索引并测量写入性能 - 在添加索引之前和之后。 – 2013-04-08 13:34:08

回答

4

写入和更新必须创建或修改索引值。因此,当表中有很多索引时,这些可能会变慢。如果你真的不关心读取时间,那么不要使用索引。

但是好的指标将大大提高读取性能,而只是略有降低写入性能,因此,只有这样做,如果读取真的,真的并不重要。

+0

谢谢安迪。对于我希望它对最终用户影响最小的审计表而言。如果我需要检查数据有效性,我意识到这将是一个长期的查询,但它通常不会完成。 – user1032531 2013-04-08 13:48:13

3

这是正确的 - 如果你关心的只是写入,你不应该使用索引。任何索引都会减慢写入速度。

索引用于改善阅读性能。索引的总体思想是,它以一种允许数据库引擎更快地访问它的方式存储经常读取的数据,而无需扫描整个表以找到该数据。折中的方法是每次将索引数据写入表时,索引都必须更新。因此,索引可提高读取性能,但会降低写入性能。

+0

谢谢杰夫,这是我的预期,但并不确定。 – user1032531 2013-04-08 13:48:49