2010-03-16 48 views
1

我這個所謂的意見MySQL表看起來像這樣:Mysql的優化

commentID parentID type userID date comment 

的commentID設置主鍵,但大部分時間我取使用的parentID數據。我應該如何設置我的索引?

我應該只在parentID上添加一個索引並且讓​​commentID成爲主鍵嗎?

編輯:有3個索引會不好嗎?例如,在具有categoryID boardID和topicID的論壇表上?

+2

是的,你應該添加parentID作爲索引。 – 2010-03-16 08:44:07

+0

謝謝,對於這個沒有問題的問題抱歉。 – Jens 2010-03-16 08:46:49

回答

1

如果您有類似於select * from comments where parent_id = ... order by date desc之類的查詢,您應該創建(除主鍵以外)(parent_id,date)的索引,該索引是兩列中的單個索引。索引的第一部分由where子句使用,第二部分確保篩選的條目按正確順序排列,因此不需要耗費時間的排序。

沒有必要僅在主鍵上創建索引。主鍵用於內部存儲並且速度非常快。你會經常需要這個連接。

您可以將許多索引添加到單個表中,但索引會減慢更新或刪除的時間。因此,您應該嘗試每個表格最多隻能有4-5個索引。

0

基本上,有很多索引的壞處是INSERT,UPDATE和DELETE操作比較慢,因爲它會更改索引樹,但如果使用索引則更快。

我不認爲這是壞的,如果你能負擔得起。