我有一个 ltree 列,其中包含一棵深度为 3 的树。我正在尝试编写一个查询,该查询可以选择特定深度的所有子级(级别 1 = 获取所有父级,2 = 获取所有子级,3 = 获取所有孙子级)。我知道这很简单n_level
:
SELECT path FROM hierarchies
WHERE
nlevel(path) = 1
LIMIT 1000;
我有 200,000 条虚拟记录,而且速度非常快(约 170 毫秒)。但是,此查询使用顺序扫描。我认为最好以利用 GiST 索引支持的 ltree 运算符的方式编写它。令人沮丧的是,我似乎无法将我的大脑包裹在他们身上,而且我还没有在 SO 或 DBA 上找到类似的问题(除了这个关于寻找叶子的问题)
任何建议表示赞赏!