使用IN子句优化Hibernate HQL SELECT

时间:2013-04-18 07:10:48

标签: sql hibernate hql

请问如何优化此查询?

FROM OrderEntity WHERE id IN (SELECT DISTINCT orderId FROM ProductEntity 
  WHERE code = :myCode OR extCode = :myCode)

此查询对于具有大约百万行的表来说太慢了

订单1 ... *产品

感谢您的帮助

修改

在纯sql中我会使用这个查询很快,但我不知道如何在HQL中形成它:

SELECT * FROM order o, (SELECT DISTINCT order_id FROM product WHERE code = 'ABC' 
   OR ext_code = 'ABC') p WHERE o.id = p.order_id

1 个答案:

答案 0 :(得分:0)

我猜可以使用与OrderEntity(外键order_id)的关联映射ProductEntity。

如果为true,请尝试映射并测试此查询(内部联接可能更快):

SELECT o 
FROM
ProductEntity p 
INNER JOIN p.orderEntity o 
WHERE p.code = :myCode OR p.extCode = :myCode