【发布时间】:2016-09-05 15:02:57
【问题描述】:
我正在通过使用JUnit 运行的测试在具有 3 个条目的表上对 H2 database 执行以下查询:
WITH ancestors(ID, PARENT_ID) AS
(
SELECT ID, PARENT_ID FROM PEOPLE WHERE ID = <person_id>
UNION ALL
SELECT P1.ID, P1.PARENT_ID FROM PEOPLE P1, PEOPLE P2 WHERE P1.ID = P2.PARENT_ID
)
SELECT ID FROM ancestors;
查询在包含人员的自引用表上执行。它找到一个人的所有祖先的 id。
由于某种原因,这会在测试挂起时运行我猜想是一个无限循环,并且我可以看到 RAM 使用量迅速上升 (>2GB)。 为什么会发生这种情况,我该如何解决?
观察:
- 这在 Oracle 中执行良好
- 如果表中没有指定 PARENT_ID,它会正常执行,但如果有,它会挂起并且 RAM 使用量不断增加。
【问题讨论】:
标签: sql infinite-loop h2 hierarchical-data hierarchical-query