2013-04-08 114 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