sql - 分层查询需要拉 child 、 parent 和 sibling

标签 sql oracle hierarchy connect-by

现在可以拉取数据,但是想知道是否有更好的方法来优化大型数据集的查询。

http://sqlfiddle.com/#!4/0ef0c/5

所以基本上我希望能够为给定的组织 ID 提供查询,并让它递归地拉取它的 parent 、 child 、 sibling 和阿姨和叔叔。然后提取与该组织层次结构关联的任何事件。

Org1 是顶级组织,但它可能有也可能没有空父级。

基本上我正在做一个上下查询来拉 child 和 parent ,但似乎只能通过添加另一个查询来获取 sibling 。终于在 friend 的帮助下进行了另一个查询,但它在大型数据集(4-5k 的事件)上非常低。

任何见解将不胜感激。

最佳答案

如果您的组织。结构是严格分层的,那么您可以使用这种方法:
http://www.ibase.ru/devinfo/DBMSTrees/sqltrees.html

缺点是您必须在每次更新组织结构时更新索引。然而,组织结构通常被更频繁地阅读然后修改。所以恕我直言,这应该可以解决问题。

关于sql - 分层查询需要拉 child 、 parent 和 sibling ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13655400/

相关文章:

SQL建表错误

sql-server - 如何从 SQL 表中检索分层数据?

recursion - 如何在Rust中将目录路径的平面列表转换为分层结构?

mysql - 将变量设置为等于精确的列和行

sql - 如何从 PostgreSQL 子查询返回两个值?

visual-studio - 连接到甲骨文

sql - 如何在 Oracle 中为日期添加前导零?

javascript - 将 JSON 扁平化为没有 ID 的层次结构/树

mysql - EAV如何存储额外的字段值?

mysql - 插入忽略不会忽略