sql文の中でnot inに関する最適化
759 ワード
私のプロジェクトの本来の業務ロジックは、選択された回答を再確認して提出した後、再検査してから返事を選ぶことができません。私のsql
そこで、not exitsを通じて最適化することを考えました。exitsは結果true or falseだけを返します。効率は自然に高いです。以下は私の言葉です。
select b.isactive isa, a.*
from PRP_HSEQ_REFORMREPLY a left join
PRP_HSEQ_RECHECK b on a.id = b.replynumid where b.isactive is null
しかし、今は業務の需要が変わっています。選択されたら続けて選ぶことができないのは簡単です。関係がない限り、選ばれます。select * from PRP_HSEQ_REFORMREPLY a where id not in (
select a.id from PRP_HSEQ_REFORMREPLY a inner join
PRP_HSEQ_RECHECK b on a.id = b.replynumid
)
ただ、not inは全表検索なので、各結果を使ってサブアセンブリを巡回してデータを検索するのは効率が悪いです。そこで、not exitsを通じて最適化することを考えました。exitsは結果true or falseだけを返します。効率は自然に高いです。以下は私の言葉です。
select * from PRP_HSEQ_REFORMREPLY a where not exists (
select a.id
from PRP_HSEQ_RECHECK b where a.id = b.replynumid
)