如何正确索引 MySQL 中的嵌套集?

How do I correctly index a nested set in MySQL?

我正在使用这个结构:

id | name | parent_id | lft | rght

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

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

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

查询优化器只会select一个索引。拥有多列索引(又名复合索引)可能很有用。但是,这取决于您 运行 在 table 上进行的查询类型。

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

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