0

FROM句のサブクエリは、tableAのすべてのレコード(の検査)に対して1回または繰り返し実行されますか?

select tA.* 
from   tableA tA,
       (select myGetSingleIdFunction('asdfaf') id from dual) tB
where tA.id = tB.id;
4

3 に答える 3

1

この記事を読む: TomKyteによるSQLのキャッシュと伝道について

これが答えです:

select tA.* 
from   tableA tA
   where tA.id = (select myGetSingleIdFunction('asdfaf') from dual);
于 2013-03-07T21:14:25.370 に答える
0

クエリプランナーが十分であれば、どちらでもありません。サブクエリで定数値を使用していることを認識し、テーブルdualを使用して、からの結果を何回tableA繰り返すかを決定します。

基本的に、クエリを次のように変換します。

select tA.* 
from tableA tA
cross join dual
where tA.id = myGetSingleIdFunction('asdfaf')
于 2013-03-05T19:59:24.563 に答える
0

一度。興味がある場合は、データベースカーソルを検索できます。データベースカーソルは、心配している方法でコレクションをさらに反復処理します。

于 2013-03-05T20:01:02.743 に答える