2010-09-22 95 views

回答

1

你可以去替代怎麼過有MySQL的指標

優勢 一般來說,MySQL的索引到數據庫爲您提供了三大優勢:

  • 查詢優化:索引使搜索查詢多更快。
  • 唯一性:像主鍵索引和唯一索引這樣的索引有助於避免重複的行數據。
  • 文本搜索:MySQL版本3.23.23中的全文索引,用戶有機會針對位於任何索引的字段中的大量文本優化搜索。 MySQL的指標

缺點 當在列(S),MySQL也創建排序單獨的文件,創建索引,僅包含字段(S)你有興趣的排序。

  • 首先,索引佔用磁盤空間。通常情況下,空間使用率並不重要,但由於在每個可能的組合中爲每列創建索引,因此索引文件的增長速度將比數據文件快得多。在表格大小較大的情況下,索引文件可能會達到操作系統的最大文件大小。其次,索引減慢了寫入查詢的速度,如INSERT,UPDATE和DELETE。由於MySQL必須在內部維護實際數據文件中插入行的「指針」,所以在上述寫入查詢的情況下需要支付性能價格,因爲每次更改記錄時都必須更新索引。但是,您可能能夠以不會導致性能明顯下降的方式編寫查詢。

+0

你在說什麼?索引其他專欄是一件大事。 – 2010-09-22 17:00:44

+0

@丹尼爾「你可以選擇其他」,這不是什麼大不了的事情,但它也取決於需求?檢查更新一次。 – 2010-09-22 17:07:12

2

絕對。這有助於SELECT ... WHERE條件不是您的主鍵。但是,請小心,不要索引太多 - 只索引你需要的。

+0

有很多使用多個索引的性能問題?我不是指由多個列組成的單個索引,而是由多個索引組成,每個索引由單個列組成 – Karl 2010-09-22 17:43:45

2

我的很多表都有主鍵以外的二級索引。您可以爲每個表創建多個索引,但在MySQL中,給定查詢中每個表只使用一個索引。

您應該創建哪些索引?這取決於你的查詢。請參閱本週我做的演示,MENTOR Your Indexes

添加更多索引會增加插入/更新/刪除開銷。當您更改數據時,RDBMS必須保持索引同步。但是,幾乎總是如此,正確的索引給你的選擇查詢帶來了很多好處,而不僅僅是維護它們的開銷。


有太大的性能損失與使用多個指標?

在書「SQL的藝術」一書中,作者測試了這一點,發現添加多個索引時性能更高。但有趣的是,它並沒有線性上升。第二,第三等指數的額外開銷以大致對數曲線下降。也就是說,兩個索引不是一個索引的兩倍。四個指標並不比兩個指數貴兩倍。