java大型IN子句
我有一个Java服务,它创建一个准备好的语句,执行并使用resultSet。然而,我有一个潜在的场景,传递给select的id列表可能在1到10000+之间。我已经研究过如何对准备好的声明进行批处理。但是,我真正想做的是将完整的集合或id发送到sql,并让它分解查询并返回完整的结果集
select col1 from tab1 where id IN (?,?,?...);
感谢任何指点
你可以在下面搜索框中键入要查询的问题!
我有一个Java服务,它创建一个准备好的语句,执行并使用resultSet。然而,我有一个潜在的场景,传递给select的id列表可能在1到10000+之间。我已经研究过如何对准备好的声明进行批处理。但是,我真正想做的是将完整的集合或id发送到sql,并让它分解查询并返回完整的结果集
select col1 from tab1 where id IN (?,?,?...);
感谢任何指点
# 1 楼答案
将
Comma separated values
转换为Rows
,然后将distinct
行插入带有主表的临时表temp table
和join
将
CSV
转换为Rows
{a1}# 2 楼答案
最好有一个表,甚至是一个临时表,其中包含要与Tab1连接的in中的ID。这样可以避免由于in中的内容太多而可能出现的错误,甚至在性能方面也可能更好