Java 流式连接多个结果集
我对sql性能有一个问题,我的数据库太多了,所以查询时间太长了Java 流式连接多个结果集,java,sql,resultset,Java,Sql,Resultset,我对sql性能有一个问题,我的数据库太多了,所以查询时间太长了 SELECT * FROM A JOIN B ON A.id = B.id where ... 所以我改成 SELECT * FROM A where A= a... SELECT * FROM B where B= b... 我从这里的2个查询中得到了2个结果集。 有人能帮助我如何以最好的性能加入2个结果集吗。 我必须拆分为2个查询,因为此数据库有10 mil条记录。您不太可能编写比数据库中的联接实现更好的联接。如果您需要帮助
SELECT * FROM A JOIN B ON A.id = B.id where ...
所以我改成
SELECT * FROM A where A= a...
SELECT * FROM B where B= b...
我从这里的2个查询中得到了2个结果集。
有人能帮助我如何以最好的性能加入2个结果集吗。
我必须拆分为2个查询,因为此数据库有10 mil条记录。您不太可能编写比数据库中的联接实现更好的联接。如果您需要帮助调整SQL查询,您应该询问,在哪里可以询问。我可以将2个结果集解析为hashmap并使用键联接,O(n)将为2n,优于联接sql n^2SQL引擎可以进行哈希联接、合并联接、嵌套循环联接等,而且它们可能也会得到更好的优化。您所需要的只是能够调优SQL。我使用的是mysql,我知道,mysql不支持哈希连接:(为什么会有不同呢?我不认为这会带来巨大的性能改进,但当我们加入小马厩时,我认为这可能会带来更好的性能。因为在这里,我们执行查询,分别使用每个表中的where子句选择唯一相关的行,然后执行join。这比join好先把所有的行放在前面,用where子句过滤掉。如果我错了,请纠正我。
Select col1, col2 ...
from
(
-- first query
) as tab1
join
(
-- second query
) as tab2 on tab1.colx = tab2.coly