首页
学习
活动
专区
圈层
工具
发布

Mysql优化
EN

Stack Overflow用户
提问于 2010-03-16 16:42:30
回答 2查看 122关注 0票数 1

我有一个名为comments的mysql表,如下所示:

代码语言:javascript
复制
commentID parentID type userID date comment

commentID被设置为主键,但大多数情况下我使用parentID来获取数据。我应该如何设置我的索引?

我应该只在parentID上添加一个索引,并让commentID作为主键吗?

编辑:有3个索引是不是不好?例如,在具有categoryID boardID和topicID的论坛表格上?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-16 17:12:35

如果您有一个类似于select * from comments where parent_id = ... order by date desc或类似的查询,那么您应该(除了主键之外)在(parent_id,date)上创建一个索引,它是两列上的单个索引。索引的第一部分由where子句使用,第二部分确保过滤的条目顺序正确,因此不需要耗时的排序。

不需要只在主键上创建索引。主键用于内部存储,而且已经非常快了。在joins中,您将经常需要它。

您可以向单个表中添加多个索引,但索引会减慢更新或删除的时间。因此,您应该尝试每个表最多只有4-5个索引。

票数 1
EN

Stack Overflow用户

发布于 2010-03-16 17:09:17

基本上,拥有许多索引的缺点是较慢的INSERT、UPDATE和DELETE操作,因为它会更改索引树,但如果使用索引,则SELECT会更快。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2452981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档