是否可以使用主鍵以外的列作爲索引,並且這樣做有什麼不利之處?MySQL:非主鍵列上的索引
回答
你可以去替代怎麼過有MySQL的指標
優勢 一般來說,MySQL的索引到數據庫爲您提供了三大優勢:
- 查詢優化:索引使搜索查詢多更快。
- 唯一性:像主鍵索引和唯一索引這樣的索引有助於避免重複的行數據。
- 文本搜索:MySQL版本3.23.23中的全文索引,用戶有機會針對位於任何索引的字段中的大量文本優化搜索。 MySQL的指標
缺點 當在列(S),MySQL也創建排序單獨的文件,創建索引,僅包含字段(S)你有興趣的排序。
首先,索引佔用磁盤空間。通常情況下,空間使用率並不重要,但由於在每個可能的組合中爲每列創建索引,因此索引文件的增長速度將比數據文件快得多。在表格大小較大的情況下,索引文件可能會達到操作系統的最大文件大小。其次,索引減慢了寫入查詢的速度,如INSERT,UPDATE和DELETE。由於MySQL必須在內部維護實際數據文件中插入行的「指針」,所以在上述寫入查詢的情況下需要支付性能價格,因爲每次更改記錄時都必須更新索引。但是,您可能能夠以不會導致性能明顯下降的方式編寫查詢。
絕對。這有助於SELECT ... WHERE
條件不是您的主鍵。但是,請小心,不要索引太多 - 只索引你需要的。
有很多使用多個索引的性能問題?我不是指由多個列組成的單個索引,而是由多個索引組成,每個索引由單個列組成 – Karl 2010-09-22 17:43:45
我的很多表都有主鍵以外的二級索引。您可以爲每個表創建多個索引,但在MySQL中,給定查詢中每個表只使用一個索引。
您應該創建哪些索引?這取決於你的查詢。請參閱本週我做的演示,MENTOR Your Indexes。
添加更多索引會增加插入/更新/刪除開銷。當您更改數據時,RDBMS必須保持索引同步。但是,幾乎總是如此,正確的索引給你的選擇查詢帶來了很多好處,而不僅僅是維護它們的開銷。
有太大的性能損失與使用多個指標?
在書「SQL的藝術」一書中,作者測試了這一點,發現添加多個索引時性能更高。但有趣的是,它並沒有線性上升。第二,第三等指數的額外開銷以大致對數曲線下降。也就是說,兩個索引不是一個索引的兩倍。四個指標並不比兩個指數貴兩倍。
- 1. 非主鍵列MySQL索引
- 2. 非主鍵列上的聚簇索引或非聚簇索引?
- 3. MySQL主鍵列上的重複索引?
- 4. 展平mysql中的非主鍵列
- 5. MySQL非主外鍵
- 6. 應將主鍵聚簇索引列添加到非聚簇索引中?
- 7. 瞭解如何在非聚集索引中包含主鍵列
- 8. 主鍵(> 1列)上的索引(1列)是否有用? (SQL)
- 9. 在表的主鍵上有索引嗎?
- 10. 索引和主鍵
- 11. 使用IN時,在非主鍵列上使用聚簇索引vs =運算符
- 12. MySQL中使用非主鍵
- 13. NHibernate列表鍵列上的SQL索引?
- 14. 主鍵vs主鍵索引速度
- 15. 休眠索引映射(雙列主鍵)
- 16. @ManyToOne(fetch = FetchType.LAZY)在非主鍵引用列上不起作用
- 17. MySql外鍵索引
- 18. 非主鍵上的has_and_belongs_to_many
- 19. Mysql中的主鍵,唯一鍵和索引
- 20. Azure上的SQL - 使用計算列作爲主鍵索引
- 21. SQL服務器引用的外鍵非主鍵列
- 22. 如果ID列是主鍵,是否需要在mySQL表上添加索引?
- 23. mysql警告:MYSQL中同一字段的主鍵和索引
- 24. 上鍵索引
- 25. 是否有必要在主鍵列上具有PRIMARY索引和colname索引?
- 26. 在外鍵約束列上創建非唯一索引
- 27. MySQL多列主鍵
- 28. 的MySQL索引鍵字段
- 29. 兩列上的單個非聚集索引或每列上的單獨索引?
- 30. 聚集索引的外鍵VS主鍵
你在說什麼?索引其他專欄是一件大事。 – 2010-09-22 17:00:44
@丹尼爾「你可以選擇其他」,這不是什麼大不了的事情,但它也取決於需求?檢查更新一次。 – 2010-09-22 17:07:12