我有一个名为 comments 的 mysql 表,如下所示:
commentID parentID type userID date comment
commentID 设置为主键,但大多数时候我使用 parentID 获取数据。我应该如何设置索引?
是不是只在parentID上加一个索引,让commentID为主键?
编辑:有 3 个索引会不好吗?例如在具有 categoryID boardID 和 topicID 的论坛表上?
最佳答案
如果你有一个像select * from comments where parent_id = ... order by date desc
或类似的查询,你应该创建(除了主键之外)一个索引( parent_id, date),它是两列的单个索引。索引的第一部分由 where 子句使用,第二部分确保过滤条目的顺序正确,因此不需要耗时的排序。
不需要只在主键上创建索引。主键用于内部存储,已经非常快了。您将经常需要它来进行连接。
您可以向单个表添加多个索引,但索引会减慢更新或删除的时间。因此,您应该尽量使每个表最多只有 4-5 个索引。
关于Mysql优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2452981/