oracle 11 g SQL文条件に数値型が存在するためクエリ効率が低下する


最近プロジェクトのために1つのメンテナンス機能を開発して、1つの臨時の機能ですが、目的は大量の歴史のデータを処理するので、1つの面白い現象を発見して、同じ意味の構造の2つのSQLの実行時間は百倍違います.
データベース:oralce 11 gR 2テストツール:sqldeveloper-17.2.0.188.1159
example:
  • sql1 : slect col1,col2 from table where col3 = ?
  • sql2 : slect col1,col4 from table where col5 = ?

  • 条件フィールドのデータ型が数値型であり、クエリーフィールドに数値型が含まれていないため、この2つの実行効率は100倍も異なります.
    解決方法:
  • 条件フィールドをクエリーフィールドに追加:slect col1,col4,col5 from table where col5 = ?
  • 数値型のクエリーフィールドcol 6:slect col1,col4,col6 from table where col5 = ?
  • に追加