sql >> データベース >  >> RDS >> Oracle

オラクル。マージサブクエリとメインクエリ条件の防止

    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を気にしないでください 、述語の順序、またはヒント。これらの一般的な方法は信頼できず、すべて失敗するのを見てきました。

    この回答 。これを今すぐ修正してください。そうしないと、将来の開発者は、型エラーを回避するために複雑なクエリを作成する必要があるときに、あなたの名前を呪うでしょう。



    1. PLSQLは、サブクエリと戻り句を使用して挿入します

    2. Mac OS XでPostgreSQLサーバーを起動するにはどうすればよいですか?

    3. スキーマに依存しないEntityFrameworkコードの最初の移行

    4. ActiveRecordクエリはストレートSQLよりもはるかに遅いですか?