相关疑难解决方法(0)

Mysql:优化在嵌套集树中查找超级节点

我在嵌套集模型中有分层数据(表:项目):

我的表(项目):

id, lft, rgt
1, 1, 6
2, 2, 3
3, 4, 5
4, 7, 10
5, 8, 9
6, 11, 12
7, 13, 14
...
Run Code Online (Sandbox Code Playgroud)

漂亮印刷:

 1
  2
  3
 4
  5
 6
 7
Run Code Online (Sandbox Code Playgroud)

为了找到最近的节点3的超节点(知道它的lft值),我能做到

explain
SELECT projects.*
FROM projects
WHERE 4 BETWEEN projects.lft AND projects.rgt
Run Code Online (Sandbox Code Playgroud)

这给了我一个到节点3的路径中的项目列表.然后通过分组并找到结果的MAX(projects.lft),我得到最近的超级节点.但是,我似乎无法让这个查询快速运行,它不会使用我已经定义的索引.EXPLAIN说:

+----+-------------+----------+-------+----------------+----------+---------+------+------+--------------------------+
| id | select_type | table    | type  | possible_keys  | key      | key_len | ref  | rows | Extra                    |
+----+-------------+----------+-------+----------------+----------+---------+------+------+--------------------------+
|  1 | SIMPLE      | projects | index | …
Run Code Online (Sandbox Code Playgroud)

mysql sql nested-sets

9
推荐指数
1
解决办法
2621
查看次数

标签 统计

mysql ×1

nested-sets ×1

sql ×1