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

时间:2015-03-12 23:04:45

标签: mysql sql optimization tree nested

我正在使用这种结构:

id | name | parent_id | lft | rght

现在看起来像是所有这些列的索引,手动添加。 Index_type为BTREE,每列的Collat​​ion为A.

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

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

1 个答案:

答案 0 :(得分:1)

查询优化器只会选择一个索引。具有多列索引(也称为复合索引)可能是有用的。但是,这取决于您将在桌面上运行的查询类型。

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

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