0

RIGHT JOINon this クエリはonTABLE ACCESS FULLを引き起こしますlims.operator。通常の結合はすぐに実行されますが、もちろん、サンプル ' WHERE authorised_by IS NULL' は表示されません。

RIGHT JOINこの場合、 a のより効率的な代替手段はありますか?

  SELECT   full_name
  FROM       (SELECT   operator_id AS authorised_by, full_name
                FROM lims.operator)
  RIGHT JOIN (SELECT   sample_id, authorised_by
                FROM   lims.sample
               WHERE   sample_template_id = 200)
  USING (authorised_by)

注: 表示されているすべての列 (full_name を除く) はインデックス化されており、一部のテーブルの主キーです。

4

3 に答える 3

1

クエリをネストする必要はありません。これを試して:

select s.full_name
from lims.operator o, lims.sample s
where o.operator_id = s.authorised_by(+)
and s.sample_template_id = 200
于 2009-04-23T21:54:19.850 に答える
1

しばらくの間、Oracle 用の SQL を作成していませんでしたが、次のようにクエリを作成します。

SELECT lims.operator.full_name
FROM       lims.operator
RIGHT JOIN lims.sample
           on lims.operator.operator_id = lims.sample.authorized_by
           and sample_template_id = 200

これはまだ悪いパフォーマンスですか?

于 2009-04-23T21:56:37.130 に答える