【问题标题】:How do I correctly index a nested set in MySQL?如何正确索引 MySQL 中的嵌套集?
【发布时间】:2015-03-12 23:04:44
【问题描述】:

我正在使用这种结构:

id | name | parent_id | lft | rght

目前看来,所有这些列上都有一个手动添加的索引。每列的 Index_type 为 BTREE,Collat​​ion 为 A。

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

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

【问题讨论】:

标签: mysql sql optimization tree nested


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 2018-05-12
    • 2011-09-14
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    相关资源
    最近更新 更多