【发布时间】:2015-05-17 09:36:22
【问题描述】:
我的程序性能有问题。我有一个连接到 MySql 数据库的 java 程序并执行一些依赖于在数据库上执行 SELECT 查询的过程。
现在的问题是我的进程程序必须在 mySql 上执行 130,000 次选择查询,这需要很长时间。
我有 10 分钟的时间来完成所有过程。
知道如何在 10 分钟内最多执行 130000 个选择查询吗?
【问题讨论】:
-
请发布一些数据结构。一般来说,添加适当的索引将有助于加快查询速度。
-
130,000 SELECTs 很多,你确定你真的需要这么大的数字吗?我会尝试优化我的逻辑以降低该数字。无意冒犯,但尤其是 mysql 用户可能没有太多的 SQL 专业知识,并试图以低效的方式解决问题。你能详细说明一下实际的 SELECT 吗?
-
@dnoeth 我有一棵节点树,前缀为“12”、“120”、“1201”、“1202”等。我需要使用选择查询来获取每个节点的父节点和制作树。换句话说,我编写了一个选择查询,为每个节点执行此操作返回节点的父节点,并将父 ID 保存在节点中。现在我的树有 130000 个节点,我必须执行我的选择查询 130000 次。
-
您似乎需要某种递归,而 mysql 不支持递归查询。但是每个递归都可以使用 WHILE 循环重写,并且 mysql 中有存储过程。如果你的树中的最大级别是已知的,你也许可以用一个 SELECT 来完成。你能展示现有的 SELECT + Java 逻辑吗?
-
@Punkbf 不要只在 cmets 中回答(它们会消失),edit 你的问题要包括所有基本信息。并添加数据结构和查询。
标签: java mysql sql performance select