我经常听说索引可以大大提高性能,但有时它们会降低性能。
除了使用内存之外,它们如何降低性能?
如果我希望优化给定表的写入时间,但不关心读取时间,我最好不使用索引(PK 除外)吗?
写入和更新必须创建或修改索引值。因此,当表上有很多索引时,这些可能会变慢。如果您真的根本不关心阅读时间,请不要使用索引。
然而,好的索引会极大地提高读取性能,而只会稍微降低写入性能,所以只有在读取真的非常不重要时才这样做。
没错——如果你只关心写,你就不应该使用索引。任何索引都会减慢您的写入速度。
索引旨在提高读取性能。索引的一般概念是,它以允许数据库引擎更快地访问它的方式存储经常读取的数据,而无需扫描整个表来查找该数据。权衡是每次将索引数据写入表时,索引也必须更新。因此,索引提高了读取性能,但降低了写入性能。