mysql - 如何在 MySQL 中正确索引嵌套集?

标签 mysql sql optimization tree nested

我正在使用这个结构:

id | name | parent_id | lft | rght

看起来现在所有这些列上都有一个手动添加的索引。每列的 Index_type 为 BTREE,排序规则为 A。

我正在与另一个人的 table 合作解决这个问题,并试图找到一种加快速度的方法。这是我第一次使用数据库,但从 StackOverflow 上找到的其他 Material 来看,一些人建议在多个列上添加索引(例如 this)。

其他帖子引用了唯一索引与空间索引以及索引此类结构背后的其他概念。您认为像这样的优化嵌套集需要什么才能运行最快?我想使用这些索引,并且如果之前的索引添加错误或者不是正确的索引类型,则可以废弃它们。

最佳答案

查询优化器只会选择一个索引。拥有多列索引(又名复合索引)可能很有用。但是,这取决于您将在表上运行哪种查询。

如果您有复合索引,它仍然适用于树中的第一列。所以,假设您在 A、B、C 上有一个复合索引。如果您正在运行只需要 A 列的查询,它仍然可以工作。但是,它将 A、B、C 的整个索引加载到缓存中。您可能会遇到内存问题,尤其是当您的索引位于大型 varchar 字段上时。

您可以阅读有关复合索引的更多信息 HERE .

关于mysql - 如何在 MySQL 中正确索引嵌套集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29021995/

相关文章:

sql - 获取插入/修改行的 DATETIME

java - Java 的 mysql 执行时间

java - 在 for 声明中调用 .length() 比在循环之前调用 .length() 慢?

python django 竞争条件与 celery

php - PDO 准备错误

php - 使用PHP将部分MySQL列数据复制到另一个

php - MySQL:查询中的符号

mysql - 三张表的两次求和和内连接的SQL语句

指定 FK 时,MYSQL 错误 #1072 在表中不存在

c++ - 根据这些字符串输入在句子中的位置对它们进行排序的更快方法是什么?