ROWNUM
オプティマイザの変換を防ぎ、型の安全性を確保するための最も安全な方法です。 ROWNUM
の使用 Oracleに行の順序が重要であると考えさせ、述語のプッシュやビューのマージなどを防ぎます。
select *
from
(
select id, value, rownum --Add ROWNUM for type safety.
from eav
where attr like 'sal%'
)
where to_number(value) > 5000;
これを行う方法は他にもありますが、どれも信頼できません。単純なインラインビュー、一般的なテーブル式、CASE
を気にしないでください 、述語の順序、またはヒント。これらの一般的な方法は信頼できず、すべて失敗するのを見てきました。
この回答 。これを今すぐ修正してください。そうしないと、将来の開発者は、型エラーを回避するために複雑なクエリを作成する必要があるときに、あなたの名前を呪うでしょう。