1 Reply Latest reply: Oct 19, 2010 9:25 PM by 734879 RSS

    Wrong execution path

    -klb
      Query going slow through cx_oracle

      select ...
      from big_table a, small_table b
      where a.col1= :bind1
      and a.col2 = :bind2
      and a.col3 = :bind3
      and a.col4 = :bind4
      and a.col5 = b.col1

      This query, when executed via SQLPLUS uses nested loops=>big table rowid via index range scan, with small table rowid index unique scan. Perfect, and very fast.

      When going through python, it does a full table scan on big_table nested loops to the index unique scan on small-table.

      Even with hint /*+ INDEX(a ix_on_those_columns) */, the query from python does a full table scan against the oracle table.

      The statistics are up to date on the objects.

      What could be causing this?

      Thanks,
        • 1. Re: Wrong execution path
          734879
          Try adding...

          conn.cursor().execute("alter session set events '10046 trace name context forever, level 12'")

          ...before you execute the query. Format the trace file using tkprof and the issue will usually jump out at you.

          HTH,

          Steve