0

こんにちは、基準を使用して次のことを行う必要があります

Select * from product pd, (Select productID pd1 from ... where ...) tpd1, 
(Select productID pd2 from ... where ...) tpd2
where pd.productID = tpd1.pd1 and pd.productID = tpd1.pd2

それが可能かどうか私は知っていますか?

元の SQL は IN 条件を使用していました

Select * from product pd where productID in (Select productID pd1 from ... where ...) and 
productID in (Select productID pd2 from ... where ...) 

ただし、結果を取得するのに時間がかかりすぎます。結合 SQL ステートメントを使用すると、結果をより速く取得できました。

助けはありますか?

4

1 に答える 1

0

Hibernate を使用している場合、予想される一致の数が比較的少ない場合は、次のようなことを行う必要があります。

select *
from   product pd
where  pd.productID in
   (select productID
    from   product pd2
    join   tpd1 on (pd2.productID = tpd1.pd1)
    join   tpd2 on (pd2.productID = tpd2.pd2)
    where  tpd1....
    and    tpd2....
   );

に一意のインデックスがあると仮定しproduct.productIDます。

または、元のクエリよりもうまく機能する場合と機能しない場合がある EXISTS 式を試すことができます。

select *
from   product pd
where  EXISTS
   (select null from tpd1 where pd.productID = tpd1.pd1 and ...)
and    EXISTS
   (select null from tpd2 where pd.productID = tpd2.pd2 and ...)
;
于 2012-08-30T03:24:49.693 に答える