Java BooleanBuilder子句生成更长的sql查询
我需要从电话号码列表中选择项目,其中某些电话号码的值可能为空。我当前使用的BooleanBuilder子句是:Java BooleanBuilder子句生成更长的sql查询,java,jpa,querydsl,Java,Jpa,Querydsl,我需要从电话号码列表中选择项目,其中某些电话号码的值可能为空。我当前使用的BooleanBuilder子句是: clause.and(QDashboard.dashboard.phoneList.any().number.isNull(). or(QDashboard.dashboard.phoneList.any().number.in(numbers))); 为上述子句生成的SQL查询为: AND ( EXISTS (SELECT 1 FRO
clause.and(QDashboard.dashboard.phoneList.any().number.isNull().
or(QDashboard.dashboard.phoneList.any().number.in(numbers)));
为上述子句生成的SQL查询为:
AND ( EXISTS
(SELECT 1
FROM phone_list pl
WHERE parent.id =pl.recordid
AND ( pl.number IS NULL )
)
OR EXISTS
(SELECT 1
FROM phone_list p2
WHERE parent.id =p2.recordid
AND ( p2.number IN ( ?, ?, ?, ?, ?, ?, ? ) )
)
我注意到,对于大型数据集,此查询速度较慢,如果SQL是这样的话,则会更快:
AND ( EXISTS
(SELECT 1
FROM phone_list pl
WHERE parent.id =pl.recordid
AND ( pl.number IN ( ?, ?, ?, ?, ?, ?, ? )
OR pl.number IS NULL)
));
如何修改BooleanBuilder子句以生成上述格式的SQL查询