Mysql优化

标签 mysql optimization

我有一个名为 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/

相关文章:

mysql - SQL总计一列但两行的每个值乘以设定值

php - 防止同时用户覆盖MYSQL数据

MySQL 查询 : find in which range quantity resides and then get the price of max quantity in the range

python - 如何将 int 转换为包含二进制表示的列表在 python 中快速?

java - Jenetics 中非原始类型的多目标问题

c - C for循环优化

python - python 中的优化方法。类似于排列

php - MySQLI 内部连接 ​​2 个表

mysql - 如何处理Mysql数据库中的事务处理。当我的数据库中断时?

reactjs - 当使用 redux 和 immutable-js 时 - 你会在选择器上调用 toJS() 吗?或者您在渲染函数中使用 .get ('prop' )吗?