私は同僚のコードをリファクタリングしていますが、彼がカーソルを使用して「述語に一致する最新の行」を取得しているケースがいくつかあります。
彼の手法は、結合をカーソルとして記述し、日付フィールドの降順で並べ替え、カーソルを開き、最初の行を取得して、カーソルを閉じることです。
これには、これを駆動する結果セットの各行に対してカーソルを呼び出す必要があり、多くの行ではコストがかかります。私は参加できることを望んでいますが、相関サブクエリよりも安価なものは何ですか:
select a.id_shared_by_several_rows, a.foo from audit_trail a
where a.entry_date = (select max(a.entry_date)
from audit_trail b
where b.id_shared_by_several_rows = a.id_shared_by_several_rows
);
これは一般的なニーズであるため、これを行う Oracle 分析関数があると思いますか?