我有一个名为comments的mysql表,如下所示:
commentID parentID type userID date commentcommentID被设置为主键,但大多数情况下我使用parentID来获取数据。我应该如何设置我的索引?
我应该只在parentID上添加一个索引,并让commentID作为主键吗?
编辑:有3个索引是不是不好?例如,在具有categoryID boardID和topicID的论坛表格上?
发布于 2010-03-16 17:12:35
如果您有一个类似于select * from comments where parent_id = ... order by date desc或类似的查询,那么您应该(除了主键之外)在(parent_id,date)上创建一个索引,它是两列上的单个索引。索引的第一部分由where子句使用,第二部分确保过滤的条目顺序正确,因此不需要耗时的排序。
不需要只在主键上创建索引。主键用于内部存储,而且已经非常快了。在joins中,您将经常需要它。
您可以向单个表中添加多个索引,但索引会减慢更新或删除的时间。因此,您应该尝试每个表最多只有4-5个索引。
发布于 2010-03-16 17:09:17
基本上,拥有许多索引的缺点是较慢的INSERT、UPDATE和DELETE操作,因为它会更改索引树,但如果使用索引,则SELECT会更快。
如果你能负担得起的话,我不认为这是件坏事。
https://stackoverflow.com/questions/2452981
复制相似问题