2010-03-16 81 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操作比较慢,因为它会更改索引树,但如果使用索引则更快。

我不认为这是坏的,如果你能负担得起。