Java / MySQL-在ResultSet上进行选择。
|
因此,我在MySQL上进行了大量选择,并获取了很多数据-按索引排序。
例如:
select * from nodes where config_id = 1;
提供(仅显示遗留物)
| definition_id (PK) | position | parent |
-------------------------------------------
90 1 0 << \"root\"
08 2 0
34 3 0
22 4 0
17 1 7 << another defn_id
38 2 7
23 3 7
07 1 90
如果这没有任何意义,请想象定义一棵树,其中90、8、34和22是根的子代。
那么7是90的孩子,而17、38、23是7的孩子(根的孙子)。
为了处理此问题,我们找到所有父节点为0的节点,将其添加,然后查看所有那些节点,查看它们是否有子节点(通过从父节点获取它们,或者不查看任何值并将其视为叶子) )。如果他们有孩子,请添加他们,然后递归继续直到树被构建。
这不是最有效的数据存储,但是其中一项要求是“单行更改”以移动节点和所有子节点的子集。我宁愿定义一个字符串0.1.6等,但这就是事实。
因此,这在测试中相当有效,但是当我们需要每天进行100,000次此操作(不进行缓存-没有意义,都稍有不同)时,我们需要对数据库的命中次数尽可能少(即一次)。您说很容易,只需掌握全部流程即可。但是,它们并不都是顺序的-正如您在上面看到的,90在7以下。是的,这些例子令人纵容,但是它说明了我们需要某种顺序的问题。
简而言之,问题基本上是,它们是否是在ResultSet上进行子选择的一种简单(且最好便宜)的方法-即将parent == 7的所有结果都放入另一个ResultSet中并进行处理?
永恒的爱和欣赏,以换取思想/评论。
没有找到相关结果
已邀请:
4 个回复
磐乓铝举
哭木算
邦绊门蔽惩
)。可能会在将来实现,但是现在我们只能使用变通方法(例如在链接上)。基本思想是在运行DBMS以及由供应商实施递归查询的机器上使用内存(具有优化,强大的算法,支持等)。 其他解决方法是编写存储过程。
乏摩纶誊伟