Skip to Main Content

Breadcrumb

Question and Answer

Tom Kyte

Thanks for the question, karthick.

Asked: November 30, 2009 - 5:11 am UTC

Last updated: December 04, 2009 - 2:30 pm UTC

Version: 10g R2

Viewed 10K+ times! This question is

You Asked

When i have a function in where clause like this

select * from <table_name> where column1 = 'x' and column2 = 'y' and my_function(column3) = 'z'

how oracle evaluates this SQL. I want to know how the filtering is applied. There is no function based index.

i.e. if the my_function is directly applied it has to be applied on all the rows of the table. But if
first 2 filter condition are evaluated then the number of rows on which my_function needs to be applied
is reduced.

I also want to know in general how the where clause is processed. Does the statistics that has been
gathered on the table play any role in determining the order in which the where clause is evaluated.

Thanks,
Karthick.


and Tom said...

.. how oracle evaluates this SQL. I want to know how the filtering is applied. There is no function based index.
...

it depends, you cannot rely on it doing it one way or the other.


... I also want to know in general how the where clause is processed. ...

In 10g, we use a cpu cost assigned to the various bits of the where clause. In all likelihood - the predicate is evaluated using column1 and column2 first in some order AND THEN my_function.

IN ALL LIKELIHOOD. No guarantees, SQL is declarative, the optimizer ultimately decides and statistics could impact this (like assigning statistics to the function itself - assigning a selectivity)

And no, using parenthesis won't change anything

select *
from (select * from t where column1='x' and column2 = 'y')
where my_function(column3) = 'z'

is IDENTICAL to your query, they are not any different.


I always recommend to wrap function calls like that in a select from dual if you are not using them as an index access, i.e.

select * from <table_name> where column1 = 'x' and column2 = 'y' and (select my_function(column3) from dual) = 'z'


that lets us use scalar subquery caching (search for that phrase on this site for more info) to reduce the number of calls we make to my_function()

Rating

  (4 ratings)

Is this answer out of date? If it is, please let us know via a Comment

Comments

scalar subquery caching

Loz, December 03, 2009 - 2:38 am UTC

Hi Tom,
Out of interest, is there any reason why the optimiser isn't able to apply caching to any scalar expression? It seems strange that it would only be able to do it when wrapped up in the (select ... from dual). It seems to be able to see through or ignore other syntactic tricks, such as order of tables, parethesis, joins vs where a.id=b.id and the like.

What have I missed?
Thanks.
Tom Kyte
December 04, 2009 - 2:30 pm UTC

it does in 10g with deterministic functions...

and certain scalar functions - it always has - eg: substr( :x, 1, 10 ), it'll tend to compute that once and use it over and over again.

So, in 10g, the scalar subquery caching is not as important, but can still definitely help, if the function is deterministic.

so, it already does, but scalar subquery caching can make it even better in most cases for plsql called from sql.

A reader, May 03, 2011 - 9:48 am UTC

Hi tom
database is running on 10.2.0.4 and follwoing query when pass function in where clasue do not use index, passing same value the fucntion is returning using index. any thoughts...

SQL> with risk_date as ( select li_risk.GETLATESTRISKDATE('LLI') as riskdate FROM DUAL) 
  2  select * FROM li_risk.risk_data_tw_v rv ,li_risk.risk_sec_type sect, risk_date s
  3  WHERE "VALUE DATE" = s.riskdate
  4  AND rv."FIRM" = ('LLI') 
  5  AND rv."RISK SEC TYPE ID" = sect.SEC_TYPE_ID
  6  AND rv.AXYSID is not null;

Execution Plan
----------------------------------------------------------
Plan hash value: 3748441797

----------------------------------------------------------------------------------------------------------------------
| Id  | Operation                             | Name                 | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                      |                      | 45086 |    92M|       | 48228   (2)| 00:11:16 |
|*  1 |  HASH JOIN                            |                      | 45086 |    92M|       | 48228   (2)| 00:11:16 |
|   2 |   NESTED LOOPS                        |                      |   156 |  5304 |       |     5   (0)| 00:00:01 |
|   3 |    FAST DUAL                          |                      |     1 |       |       |     2   (0)| 00:00:01 |
|   4 |    TABLE ACCESS FULL                  | RISK_SEC_TYPE        |   156 |  5304 |       |     3   (0)| 00:00:01 |
|*  5 |   VIEW                                | RISK_DATA_TW_V       | 45086 |    91M|       | 48222   (2)| 00:11:16 |
|   6 |    UNION-ALL                          |                      |       |       |       |            |          |
|*  7 |     HASH JOIN RIGHT OUTER             |                      | 41220 |    17M|       | 41507   (3)| 00:09:42 |
|   8 |      TABLE ACCESS FULL                | RISK_ISSUER          | 38013 |   705K|       |    39   (3)| 00:00:01 |
|*  9 |      HASH JOIN RIGHT OUTER            |                      | 41220 |    16M|       | 41467   (3)| 00:09:41 |
|  10 |       TABLE ACCESS FULL               | RISK_SEC_TYPE        |   156 |  2964 |       |     3   (0)| 00:00:01 |
|* 11 |       HASH JOIN RIGHT OUTER           |                      | 41220 |    15M|       | 41463   (3)| 00:09:41 |
|  12 |        TABLE ACCESS FULL              | RISK_RATINGS_REF     |   120 |  1080 |       |     3   (0)| 00:00:01 |
|* 13 |        HASH JOIN RIGHT OUTER          |                      | 41220 |    15M|       | 41459   (3)| 00:09:41 |
|  14 |         TABLE ACCESS FULL             | RISK_RATINGS_REF     |   120 |  1080 |       |     3   (0)| 00:00:01 |
|* 15 |         HASH JOIN                     |                      | 41220 |    15M|  8656K| 41455   (3)| 00:09:41 |
|* 16 |          HASH JOIN                    |                      | 41220 |  8171K|  8256K| 12878   (2)| 00:03:01 |
|* 17 |           HASH JOIN                   |                      | 41220 |  7769K|       |  5069   (1)| 00:01:11 |
|* 18 |            TABLE ACCESS FULL          | RISK_TERM_DETAIL     |  8094 |   695K|       |   255   (4)| 00:00:04 |
|  19 |            TABLE ACCESS BY INDEX ROWID| RISK_POSITION        |   303 | 21816 |       |     9   (0)| 00:00:01 |
|  20 |             NESTED LOOPS              |                      |   160K|    16M|       |  4812   (1)| 00:01:08 |
|* 21 |              TABLE ACCESS FULL        | RISK_LOAD_CONTROL    |   531 | 17523 |       |     9   (0)| 00:00:01 |
|* 22 |              INDEX RANGE SCAN         | RISK_POSITION_IDX1   |   303 |       |       |     2   (0)| 00:00:01 |
|  23 |           TABLE ACCESS FULL           | RISK_SCENARIO        |  2343K|    22M|       |  5320   (4)| 00:01:15 |
|  24 |          TABLE ACCESS FULL            | RISK_SENSITIVITY     |  2343K|   399M|       |  9943   (6)| 00:02:20 |
|* 25 |     HASH JOIN OUTER                   |                      |  3866 |  1042K|       |  6715   (1)| 00:01:35 |
|* 26 |      HASH JOIN RIGHT OUTER            |                      |  3866 |   970K|       |  6675   (1)| 00:01:34 |
|  27 |       TABLE ACCESS FULL               | RISK_SEC_TYPE        |   156 |  2964 |       |     3   (0)| 00:00:01 |
|* 28 |       HASH JOIN RIGHT OUTER           |                      |  3866 |   898K|       |  6672   (1)| 00:01:34 |
|  29 |        TABLE ACCESS FULL              | RISK_RATINGS_REF     |   120 |  1080 |       |     3   (0)| 00:00:01 |
|* 30 |        HASH JOIN RIGHT OUTER          |                      |  3866 |   864K|       |  6668   (1)| 00:01:34 |
|  31 |         TABLE ACCESS FULL             | RISK_RATINGS_REF     |   120 |  1080 |       |     3   (0)| 00:00:01 |
|* 32 |         HASH JOIN                     |                      |  3866 |   830K|  8256K|  6665   (1)| 00:01:34 |
|* 33 |          HASH JOIN                    |                      | 41220 |  7769K|       |  5069   (1)| 00:01:11 |
|* 34 |           TABLE ACCESS FULL           | RISK_TERM_DETAIL     |  8094 |   695K|       |   255   (4)| 00:00:04 |
|  35 |           TABLE ACCESS BY INDEX ROWID | RISK_POSITION        |   303 | 21816 |       |     9   (0)| 00:00:01 |
|  36 |            NESTED LOOPS               |                      |   160K|    16M|       |  4812   (1)| 00:01:08 |
|* 37 |             TABLE ACCESS FULL         | RISK_LOAD_CONTROL    |   531 | 17523 |       |     9   (0)| 00:00:01 |
|* 38 |             INDEX RANGE SCAN          | RISK_POSITION_IDX1   |   303 |       |       |     2   (0)| 00:00:01 |
|  39 |          TABLE ACCESS FULL            | RISK_SENSITIVITY_CLP |   219K|  5793K|       |   896   (2)| 00:00:13 |
|  40 |      TABLE ACCESS FULL                | RISK_ISSUER          | 38013 |   705K|       |    39   (3)| 00:00:01 |
----------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("RV"."RISK SEC TYPE ID"="SECT"."SEC_TYPE_ID")
   5 - filter("VALUE DATE"="LI_RISK"."GETLATESTRISKDATE"('LLI'))
   7 - access("TERM"."ISSUER_ID"="ISS"."ISSUER_ID"(+))
   9 - access("TERM"."SEC_TYPE_ID"="SECT"."SEC_TYPE_ID"(+))
  11 - access("TERM"."SP_RATING"="S"."ID"(+))
  13 - access("TERM"."MOODYS_RATING"="M"."ID"(+))
  15 - access("POS"."POSITION_ID"="SENS"."POSITION_ID")
  16 - access("POS"."POSITION_ID"="SCNR"."POSITION_ID")
  17 - access("POS"."SEC_ID"="TERM"."SEC_ID")
  18 - filter("TERM"."AXYSID" IS NOT NULL)
  21 - filter("CNTL"."FIRM_CODE"='LLI' AND "CNTL"."LOAD_STATUS"='PROCESSED')
  22 - access("CNTL"."LOAD_ID"="POS"."LOAD_ID")
  25 - access("TERM"."ISSUER_ID"="ISS"."ISSUER_ID"(+))
  26 - access("TERM"."SEC_TYPE_ID"="SECT"."SEC_TYPE_ID"(+))
  28 - access("TERM"."SP_RATING"="S"."ID"(+))
  30 - access("TERM"."MOODYS_RATING"="M"."ID"(+))
  32 - access("POS"."POSITION_ID"="SENS"."POSITION_ID")
  33 - access("POS"."SEC_ID"="TERM"."SEC_ID")
  34 - filter("TERM"."AXYSID" IS NOT NULL)
  37 - filter("CNTL"."FIRM_CODE"='LLI' AND "CNTL"."LOAD_STATUS"='PROCESSED')
  38 - access("CNTL"."LOAD_ID"="POS"."LOAD_ID")

SQL> 


SQL> set autotrace trace exp
SQL> select * FROM li_risk.risk_data_tw_v rv ,li_risk.risk_sec_type sect 
  2  WHERE "VALUE DATE" = to_date('3/17/2011','MM/DD/YYYY')
  3  AND rv."FIRM" = ('LLI') 
  4  AND rv."RISK SEC TYPE ID" = sect.SEC_TYPE_ID
  5  AND rv.AXYSID is not null;
Elapsed: 00:00:00.79

Execution Plan
----------------------------------------------------------
Plan hash value: 203326834

----------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |                           |    58 |   121K|   874   (1)| 00:00:13 |
|*  1 |  HASH JOIN                               |                           |    58 |   121K|   874   (1)| 00:00:13 |
|   2 |   TABLE ACCESS FULL                      | RISK_SEC_TYPE             |   156 |  5304 |     3   (0)| 00:00:01 |
|   3 |   VIEW                                   | RISK_DATA_TW_V            |    58 |   119K|   871   (1)| 00:00:13 |
|   4 |    UNION-ALL                             |                           |       |       |            |          |
|   5 |     TABLE ACCESS BY INDEX ROWID          | RISK_SENSITIVITY          |     1 |   179 |     3   (0)| 00:00:01 |
|   6 |      NESTED LOOPS                        |                           |    53 | 23214 |   592   (1)| 00:00:09 |
|*  7 |       HASH JOIN OUTER                    |                           |    53 | 13727 |   433   (1)| 00:00:07 |
|*  8 |        HASH JOIN OUTER                   |                           |    53 | 13250 |   430   (1)| 00:00:07 |
|   9 |         TABLE ACCESS BY INDEX ROWID      | RISK_SCENARIO             |     1 |    10 |     3   (0)| 00:00:01 |
|  10 |          NESTED LOOPS                    |                           |    53 | 12773 |   426   (1)| 00:00:06 |
|  11 |           NESTED LOOPS OUTER             |                           |    53 | 12243 |   267   (1)| 00:00:04 |
|* 12 |            HASH JOIN OUTER               |                           |    53 | 11236 |   230   (1)| 00:00:04 |
|  13 |             NESTED LOOPS                 |                           |    53 | 10229 |   227   (1)| 00:00:04 |
|  14 |              NESTED LOOPS                |                           |   208 | 21840 |    18   (0)| 00:00:01 |
|* 15 |               TABLE ACCESS FULL          | RISK_LOAD_CONTROL         |     1 |    33 |     9   (0)| 00:00:01 |
|  16 |               TABLE ACCESS BY INDEX ROWID| RISK_POSITION             |   303 | 21816 |     9   (0)| 00:00:01 |
|* 17 |                INDEX RANGE SCAN          | RISK_POSITION_IDX1        |   303 |       |     2   (0)| 00:00:01 |
|* 18 |              TABLE ACCESS BY INDEX ROWID | RISK_TERM_DETAIL          |     1 |    88 |     1   (0)| 00:00:01 |
|* 19 |               INDEX UNIQUE SCAN          | RISK_TERM_DETAIL_PK       |     1 |       |     0   (0)| 00:00:01 |
|  20 |             TABLE ACCESS FULL            | RISK_SEC_TYPE             |   156 |  2964 |     3   (0)| 00:00:01 |
|  21 |            TABLE ACCESS BY INDEX ROWID   | RISK_ISSUER               |     1 |    19 |     1   (0)| 00:00:01 |
|* 22 |             INDEX UNIQUE SCAN            | RISK_ISSUER_PK            |     1 |       |     0   (0)| 00:00:01 |
|* 23 |           INDEX RANGE SCAN               | RISK_SCENARIO_IDX1        |     1 |       |     2   (0)| 00:00:01 |
|  24 |         TABLE ACCESS FULL                | RISK_RATINGS_REF          |   120 |  1080 |     3   (0)| 00:00:01 |
|  25 |        TABLE ACCESS FULL                 | RISK_RATINGS_REF          |   120 |  1080 |     3   (0)| 00:00:01 |
|* 26 |       INDEX RANGE SCAN                   | RISK_SENSITIVITY_IDX1     |     1 |       |     2   (0)| 00:00:01 |
|  27 |     NESTED LOOPS OUTER                   |                           |     5 |  1380 |   279   (1)| 00:00:04 |
|* 28 |      HASH JOIN OUTER                     |                           |     5 |  1285 |   275   (1)| 00:00:04 |
|  29 |       NESTED LOOPS OUTER                 |                           |     5 |  1190 |   271   (0)| 00:00:04 |
|  30 |        NESTED LOOPS OUTER                |                           |     5 |  1145 |   268   (0)| 00:00:04 |
|  31 |         NESTED LOOPS                     |                           |     5 |  1100 |   266   (0)| 00:00:04 |
|  32 |          NESTED LOOPS                    |                           |    20 |  2640 |   246   (0)| 00:00:04 |
|  33 |           NESTED LOOPS                   |                           |   208 | 21840 |    18   (0)| 00:00:01 |
|* 34 |            TABLE ACCESS FULL             | RISK_LOAD_CONTROL         |     1 |    33 |     9   (0)| 00:00:01 |
|  35 |            TABLE ACCESS BY INDEX ROWID   | RISK_POSITION             |   303 | 21816 |     9   (0)| 00:00:01 |
|* 36 |             INDEX RANGE SCAN             | RISK_POSITION_IDX1        |   303 |       |     2   (0)| 00:00:01 |
|  37 |           TABLE ACCESS BY INDEX ROWID    | RISK_SENSITIVITY_CLP      |     1 |    27 |     2   (0)| 00:00:01 |
|* 38 |            INDEX RANGE SCAN              | RISK_SENSITIVITY_CLP_IDX1 |     1 |       |     1   (0)| 00:00:01 |
|* 39 |          TABLE ACCESS BY INDEX ROWID     | RISK_TERM_DETAIL          |     1 |    88 |     1   (0)| 00:00:01 |
|* 40 |           INDEX UNIQUE SCAN              | RISK_TERM_DETAIL_PK       |     1 |       |     0   (0)| 00:00:01 |
|  41 |         TABLE ACCESS BY INDEX ROWID      | RISK_RATINGS_REF          |     1 |     9 |     1   (0)| 00:00:01 |
|* 42 |          INDEX UNIQUE SCAN               | RISK_RATINGS_REF_PK       |     1 |       |     0   (0)| 00:00:01 |
|  43 |        TABLE ACCESS BY INDEX ROWID       | RISK_RATINGS_REF          |     1 |     9 |     1   (0)| 00:00:01 |
|* 44 |         INDEX UNIQUE SCAN                | RISK_RATINGS_REF_PK       |     1 |       |     0   (0)| 00:00:01 |
|  45 |       TABLE ACCESS FULL                  | RISK_SEC_TYPE             |   156 |  2964 |     3   (0)| 00:00:01 |
|  46 |      TABLE ACCESS BY INDEX ROWID         | RISK_ISSUER               |     1 |    19 |     1   (0)| 00:00:01 |
|* 47 |       INDEX UNIQUE SCAN                  | RISK_ISSUER_PK            |     1 |       |     0   (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("RV"."RISK SEC TYPE ID"="SECT"."SEC_TYPE_ID")
   7 - access("TERM"."SP_RATING"="S"."ID"(+))
   8 - access("TERM"."MOODYS_RATING"="M"."ID"(+))
  12 - access("TERM"."SEC_TYPE_ID"="SECT"."SEC_TYPE_ID"(+))
  15 - filter("CNTL"."VALUE_DT"=TO_DATE(' 2011-03-17 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
              "CNTL"."FIRM_CODE"='LLI' AND "CNTL"."LOAD_STATUS"='PROCESSED')
  17 - access("CNTL"."LOAD_ID"="POS"."LOAD_ID")
  18 - filter("TERM"."AXYSID" IS NOT NULL)
  19 - access("POS"."SEC_ID"="TERM"."SEC_ID")
  22 - access("TERM"."ISSUER_ID"="ISS"."ISSUER_ID"(+))
  23 - access("POS"."POSITION_ID"="SCNR"."POSITION_ID")
  26 - access("POS"."POSITION_ID"="SENS"."POSITION_ID")
  28 - access("TERM"."SEC_TYPE_ID"="SECT"."SEC_TYPE_ID"(+))
  34 - filter("CNTL"."VALUE_DT"=TO_DATE(' 2011-03-17 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
              "CNTL"."FIRM_CODE"='LLI' AND "CNTL"."LOAD_STATUS"='PROCESSED')
  36 - access("CNTL"."LOAD_ID"="POS"."LOAD_ID")
  38 - access("POS"."POSITION_ID"="SENS"."POSITION_ID")
  39 - filter("TERM"."AXYSID" IS NOT NULL)
  40 - access("POS"."SEC_ID"="TERM"."SEC_ID")
  42 - access("TERM"."MOODYS_RATING"="M"."ID"(+))
  44 - access("TERM"."SP_RATING"="S"."ID"(+))
  47 - access("TERM"."ISSUER_ID"="ISS"."ISSUER_ID"(+))

SQL> 

A reader, May 03, 2011 - 10:00 am UTC

sorry the first query was wrongly pasted.

SQL> select * FROM li_risk.risk_data_tw_v rv ,li_risk.risk_sec_type sect 
  2  WHERE "VALUE DATE" = li_risk.GETLATESTRISKDATE('LLI') 
  3  AND rv."FIRM" = ('LLI') 
  4  AND rv."RISK SEC TYPE ID" = sect.SEC_TYPE_ID
  5  AND rv.AXYSID is not null;
Elapsed: 00:00:00.00

Execution Plan
----------------------------------------------------------
Plan hash value: 1698091535

----------------------------------------------------------------------------------------------------------------------
| Id  | Operation                             | Name                 | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                      |                      | 45086 |    92M|       | 48226   (2)| 00:11:16 |
|*  1 |  HASH JOIN                            |                      | 45086 |    92M|       | 48226   (2)| 00:11:16 |
|   2 |   TABLE ACCESS FULL                   | RISK_SEC_TYPE        |   156 |  5304 |       |     3   (0)| 00:00:01 |
|*  3 |   VIEW                                | RISK_DATA_TW_V       | 45086 |    91M|       | 48222   (2)| 00:11:16 |
|   4 |    UNION-ALL                          |                      |       |       |       |            |          |
|*  5 |     HASH JOIN RIGHT OUTER             |                      | 41220 |    17M|       | 41507   (3)| 00:09:42 |
|   6 |      TABLE ACCESS FULL                | RISK_ISSUER          | 38013 |   705K|       |    39   (3)| 00:00:01 |
|*  7 |      HASH JOIN RIGHT OUTER            |                      | 41220 |    16M|       | 41467   (3)| 00:09:41 |
|   8 |       TABLE ACCESS FULL               | RISK_SEC_TYPE        |   156 |  2964 |       |     3   (0)| 00:00:01 |
|*  9 |       HASH JOIN RIGHT OUTER           |                      | 41220 |    15M|       | 41463   (3)| 00:09:41 |
|  10 |        TABLE ACCESS FULL              | RISK_RATINGS_REF     |   120 |  1080 |       |     3   (0)| 00:00:01 |
|* 11 |        HASH JOIN RIGHT OUTER          |                      | 41220 |    15M|       | 41459   (3)| 00:09:41 |
|  12 |         TABLE ACCESS FULL             | RISK_RATINGS_REF     |   120 |  1080 |       |     3   (0)| 00:00:01 |
|* 13 |         HASH JOIN                     |                      | 41220 |    15M|  8656K| 41455   (3)| 00:09:41 |
|* 14 |          HASH JOIN                    |                      | 41220 |  8171K|  8256K| 12878   (2)| 00:03:01 |
|* 15 |           HASH JOIN                   |                      | 41220 |  7769K|       |  5069   (1)| 00:01:11 |
|* 16 |            TABLE ACCESS FULL          | RISK_TERM_DETAIL     |  8094 |   695K|       |   255   (4)| 00:00:04 |
|  17 |            TABLE ACCESS BY INDEX ROWID| RISK_POSITION        |   303 | 21816 |       |     9   (0)| 00:00:01 |
|  18 |             NESTED LOOPS              |                      |   160K|    16M|       |  4812   (1)| 00:01:08 |
|* 19 |              TABLE ACCESS FULL        | RISK_LOAD_CONTROL    |   531 | 17523 |       |     9   (0)| 00:00:01 |
|* 20 |              INDEX RANGE SCAN         | RISK_POSITION_IDX1   |   303 |       |       |     2   (0)| 00:00:01 |
|  21 |           TABLE ACCESS FULL           | RISK_SCENARIO        |  2343K|    22M|       |  5320   (4)| 00:01:15 |
|  22 |          TABLE ACCESS FULL            | RISK_SENSITIVITY     |  2343K|   399M|       |  9943   (6)| 00:02:20 |
|* 23 |     HASH JOIN OUTER                   |                      |  3866 |  1042K|       |  6715   (1)| 00:01:35 |
|* 24 |      HASH JOIN RIGHT OUTER            |                      |  3866 |   970K|       |  6675   (1)| 00:01:34 |
|  25 |       TABLE ACCESS FULL               | RISK_SEC_TYPE        |   156 |  2964 |       |     3   (0)| 00:00:01 |
|* 26 |       HASH JOIN RIGHT OUTER           |                      |  3866 |   898K|       |  6672   (1)| 00:01:34 |
|  27 |        TABLE ACCESS FULL              | RISK_RATINGS_REF     |   120 |  1080 |       |     3   (0)| 00:00:01 |
|* 28 |        HASH JOIN RIGHT OUTER          |                      |  3866 |   864K|       |  6668   (1)| 00:01:34 |
|  29 |         TABLE ACCESS FULL             | RISK_RATINGS_REF     |   120 |  1080 |       |     3   (0)| 00:00:01 |
|* 30 |         HASH JOIN                     |                      |  3866 |   830K|  8256K|  6665   (1)| 00:01:34 |
|* 31 |          HASH JOIN                    |                      | 41220 |  7769K|       |  5069   (1)| 00:01:11 |
|* 32 |           TABLE ACCESS FULL           | RISK_TERM_DETAIL     |  8094 |   695K|       |   255   (4)| 00:00:04 |
|  33 |           TABLE ACCESS BY INDEX ROWID | RISK_POSITION        |   303 | 21816 |       |     9   (0)| 00:00:01 |
|  34 |            NESTED LOOPS               |                      |   160K|    16M|       |  4812   (1)| 00:01:08 |
|* 35 |             TABLE ACCESS FULL         | RISK_LOAD_CONTROL    |   531 | 17523 |       |     9   (0)| 00:00:01 |
|* 36 |             INDEX RANGE SCAN          | RISK_POSITION_IDX1   |   303 |       |       |     2   (0)| 00:00:01 |
|  37 |          TABLE ACCESS FULL            | RISK_SENSITIVITY_CLP |   219K|  5793K|       |   896   (2)| 00:00:13 |
|  38 |      TABLE ACCESS FULL                | RISK_ISSUER          | 38013 |   705K|       |    39   (3)| 00:00:01 |
----------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("RV"."RISK SEC TYPE ID"="SECT"."SEC_TYPE_ID")
   3 - filter("VALUE DATE"="LI_RISK"."GETLATESTRISKDATE"('LLI'))
   5 - access("TERM"."ISSUER_ID"="ISS"."ISSUER_ID"(+))
   7 - access("TERM"."SEC_TYPE_ID"="SECT"."SEC_TYPE_ID"(+))
   9 - access("TERM"."SP_RATING"="S"."ID"(+))
  11 - access("TERM"."MOODYS_RATING"="M"."ID"(+))
  13 - access("POS"."POSITION_ID"="SENS"."POSITION_ID")
  14 - access("POS"."POSITION_ID"="SCNR"."POSITION_ID")
  15 - access("POS"."SEC_ID"="TERM"."SEC_ID")
  16 - filter("TERM"."AXYSID" IS NOT NULL)
  19 - filter("CNTL"."FIRM_CODE"='LLI' AND "CNTL"."LOAD_STATUS"='PROCESSED')
  20 - access("CNTL"."LOAD_ID"="POS"."LOAD_ID")
  23 - access("TERM"."ISSUER_ID"="ISS"."ISSUER_ID"(+))
  24 - access("TERM"."SEC_TYPE_ID"="SECT"."SEC_TYPE_ID"(+))
  26 - access("TERM"."SP_RATING"="S"."ID"(+))
  28 - access("TERM"."MOODYS_RATING"="M"."ID"(+))
  30 - access("POS"."POSITION_ID"="SENS"."POSITION_ID")
  31 - access("POS"."SEC_ID"="TERM"."SEC_ID")
  32 - filter("TERM"."AXYSID" IS NOT NULL)
  35 - filter("CNTL"."FIRM_CODE"='LLI' AND "CNTL"."LOAD_STATUS"='PROCESSED')
  36 - access("CNTL"."LOAD_ID"="POS"."LOAD_ID")

SQL> 

SQL> set autotrace trace exp
SQL> select * FROM li_risk.risk_data_tw_v rv ,li_risk.risk_sec_type sect 
  2  WHERE "VALUE DATE" = to_date('3/17/2011','MM/DD/YYYY')
  3  AND rv."FIRM" = ('LLI') 
  4  AND rv."RISK SEC TYPE ID" = sect.SEC_TYPE_ID
  5  AND rv.AXYSID is not null;
Elapsed: 00:00:00.79

Execution Plan
----------------------------------------------------------
Plan hash value: 203326834

----------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |                           |    58 |   121K|   874   (1)| 00:00:13 |
|*  1 |  HASH JOIN                               |                           |    58 |   121K|   874   (1)| 00:00:13 |
|   2 |   TABLE ACCESS FULL                      | RISK_SEC_TYPE             |   156 |  5304 |     3   (0)| 00:00:01 |
|   3 |   VIEW                                   | RISK_DATA_TW_V            |    58 |   119K|   871   (1)| 00:00:13 |
|   4 |    UNION-ALL                             |                           |       |       |            |          |
|   5 |     TABLE ACCESS BY INDEX ROWID          | RISK_SENSITIVITY          |     1 |   179 |     3   (0)| 00:00:01 |
|   6 |      NESTED LOOPS                        |                           |    53 | 23214 |   592   (1)| 00:00:09 |
|*  7 |       HASH JOIN OUTER                    |                           |    53 | 13727 |   433   (1)| 00:00:07 |
|*  8 |        HASH JOIN OUTER                   |                           |    53 | 13250 |   430   (1)| 00:00:07 |
|   9 |         TABLE ACCESS BY INDEX ROWID      | RISK_SCENARIO             |     1 |    10 |     3   (0)| 00:00:01 |
|  10 |          NESTED LOOPS                    |                           |    53 | 12773 |   426   (1)| 00:00:06 |
|  11 |           NESTED LOOPS OUTER             |                           |    53 | 12243 |   267   (1)| 00:00:04 |
|* 12 |            HASH JOIN OUTER               |                           |    53 | 11236 |   230   (1)| 00:00:04 |
|  13 |             NESTED LOOPS                 |                           |    53 | 10229 |   227   (1)| 00:00:04 |
|  14 |              NESTED LOOPS                |                           |   208 | 21840 |    18   (0)| 00:00:01 |
|* 15 |               TABLE ACCESS FULL          | RISK_LOAD_CONTROL         |     1 |    33 |     9   (0)| 00:00:01 |
|  16 |               TABLE ACCESS BY INDEX ROWID| RISK_POSITION             |   303 | 21816 |     9   (0)| 00:00:01 |
|* 17 |                INDEX RANGE SCAN          | RISK_POSITION_IDX1        |   303 |       |     2   (0)| 00:00:01 |
|* 18 |              TABLE ACCESS BY INDEX ROWID | RISK_TERM_DETAIL          |     1 |    88 |     1   (0)| 00:00:01 |
|* 19 |               INDEX UNIQUE SCAN          | RISK_TERM_DETAIL_PK       |     1 |       |     0   (0)| 00:00:01 |
|  20 |             TABLE ACCESS FULL            | RISK_SEC_TYPE             |   156 |  2964 |     3   (0)| 00:00:01 |
|  21 |            TABLE ACCESS BY INDEX ROWID   | RISK_ISSUER               |     1 |    19 |     1   (0)| 00:00:01 |
|* 22 |             INDEX UNIQUE SCAN            | RISK_ISSUER_PK            |     1 |       |     0   (0)| 00:00:01 |
|* 23 |           INDEX RANGE SCAN               | RISK_SCENARIO_IDX1        |     1 |       |     2   (0)| 00:00:01 |
|  24 |         TABLE ACCESS FULL                | RISK_RATINGS_REF          |   120 |  1080 |     3   (0)| 00:00:01 |
|  25 |        TABLE ACCESS FULL                 | RISK_RATINGS_REF          |   120 |  1080 |     3   (0)| 00:00:01 |
|* 26 |       INDEX RANGE SCAN                   | RISK_SENSITIVITY_IDX1     |     1 |       |     2   (0)| 00:00:01 |
|  27 |     NESTED LOOPS OUTER                   |                           |     5 |  1380 |   279   (1)| 00:00:04 |
|* 28 |      HASH JOIN OUTER                     |                           |     5 |  1285 |   275   (1)| 00:00:04 |
|  29 |       NESTED LOOPS OUTER                 |                           |     5 |  1190 |   271   (0)| 00:00:04 |
|  30 |        NESTED LOOPS OUTER                |                           |     5 |  1145 |   268   (0)| 00:00:04 |
|  31 |         NESTED LOOPS                     |                           |     5 |  1100 |   266   (0)| 00:00:04 |
|  32 |          NESTED LOOPS                    |                           |    20 |  2640 |   246   (0)| 00:00:04 |
|  33 |           NESTED LOOPS                   |                           |   208 | 21840 |    18   (0)| 00:00:01 |
|* 34 |            TABLE ACCESS FULL             | RISK_LOAD_CONTROL         |     1 |    33 |     9   (0)| 00:00:01 |
|  35 |            TABLE ACCESS BY INDEX ROWID   | RISK_POSITION             |   303 | 21816 |     9   (0)| 00:00:01 |
|* 36 |             INDEX RANGE SCAN             | RISK_POSITION_IDX1        |   303 |       |     2   (0)| 00:00:01 |
|  37 |           TABLE ACCESS BY INDEX ROWID    | RISK_SENSITIVITY_CLP      |     1 |    27 |     2   (0)| 00:00:01 |
|* 38 |            INDEX RANGE SCAN              | RISK_SENSITIVITY_CLP_IDX1 |     1 |       |     1   (0)| 00:00:01 |
|* 39 |          TABLE ACCESS BY INDEX ROWID     | RISK_TERM_DETAIL          |     1 |    88 |     1   (0)| 00:00:01 |
|* 40 |           INDEX UNIQUE SCAN              | RISK_TERM_DETAIL_PK       |     1 |       |     0   (0)| 00:00:01 |
|  41 |         TABLE ACCESS BY INDEX ROWID      | RISK_RATINGS_REF          |     1 |     9 |     1   (0)| 00:00:01 |
|* 42 |          INDEX UNIQUE SCAN               | RISK_RATINGS_REF_PK       |     1 |       |     0   (0)| 00:00:01 |
|  43 |        TABLE ACCESS BY INDEX ROWID       | RISK_RATINGS_REF          |     1 |     9 |     1   (0)| 00:00:01 |
|* 44 |         INDEX UNIQUE SCAN                | RISK_RATINGS_REF_PK       |     1 |       |     0   (0)| 00:00:01 |
|  45 |       TABLE ACCESS FULL                  | RISK_SEC_TYPE             |   156 |  2964 |     3   (0)| 00:00:01 |
|  46 |      TABLE ACCESS BY INDEX ROWID         | RISK_ISSUER               |     1 |    19 |     1   (0)| 00:00:01 |
|* 47 |       INDEX UNIQUE SCAN                  | RISK_ISSUER_PK            |     1 |       |     0   (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("RV"."RISK SEC TYPE ID"="SECT"."SEC_TYPE_ID")
   7 - access("TERM"."SP_RATING"="S"."ID"(+))
   8 - access("TERM"."MOODYS_RATING"="M"."ID"(+))
  12 - access("TERM"."SEC_TYPE_ID"="SECT"."SEC_TYPE_ID"(+))
  15 - filter("CNTL"."VALUE_DT"=TO_DATE(' 2011-03-17 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
              "CNTL"."FIRM_CODE"='LLI' AND "CNTL"."LOAD_STATUS"='PROCESSED')
  17 - access("CNTL"."LOAD_ID"="POS"."LOAD_ID")
  18 - filter("TERM"."AXYSID" IS NOT NULL)
  19 - access("POS"."SEC_ID"="TERM"."SEC_ID")
  22 - access("TERM"."ISSUER_ID"="ISS"."ISSUER_ID"(+))
  23 - access("POS"."POSITION_ID"="SCNR"."POSITION_ID")
  26 - access("POS"."POSITION_ID"="SENS"."POSITION_ID")
  28 - access("TERM"."SEC_TYPE_ID"="SECT"."SEC_TYPE_ID"(+))
  34 - filter("CNTL"."VALUE_DT"=TO_DATE(' 2011-03-17 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
              "CNTL"."FIRM_CODE"='LLI' AND "CNTL"."LOAD_STATUS"='PROCESSED')
  36 - access("CNTL"."LOAD_ID"="POS"."LOAD_ID")
  38 - access("POS"."POSITION_ID"="SENS"."POSITION_ID")
  39 - filter("TERM"."AXYSID" IS NOT NULL)
  40 - access("POS"."SEC_ID"="TERM"."SEC_ID")
  42 - access("TERM"."MOODYS_RATING"="M"."ID"(+))
  44 - access("TERM"."SP_RATING"="S"."ID"(+))
  47 - access("TERM"."ISSUER_ID"="ISS"."ISSUER_ID"(+))

SQL> 

A reader, May 03, 2011 - 10:00 am UTC

sorry the first query was wrongly pasted.

SQL> select * FROM li_risk.risk_data_tw_v rv ,li_risk.risk_sec_type sect 
  2  WHERE "VALUE DATE" = li_risk.GETLATESTRISKDATE('LLI') 
  3  AND rv."FIRM" = ('LLI') 
  4  AND rv."RISK SEC TYPE ID" = sect.SEC_TYPE_ID
  5  AND rv.AXYSID is not null;
Elapsed: 00:00:00.00

Execution Plan
----------------------------------------------------------
Plan hash value: 1698091535

----------------------------------------------------------------------------------------------------------------------
| Id  | Operation                             | Name                 | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                      |                      | 45086 |    92M|       | 48226   (2)| 00:11:16 |
|*  1 |  HASH JOIN                            |                      | 45086 |    92M|       | 48226   (2)| 00:11:16 |
|   2 |   TABLE ACCESS FULL                   | RISK_SEC_TYPE        |   156 |  5304 |       |     3   (0)| 00:00:01 |
|*  3 |   VIEW                                | RISK_DATA_TW_V       | 45086 |    91M|       | 48222   (2)| 00:11:16 |
|   4 |    UNION-ALL                          |                      |       |       |       |            |          |
|*  5 |     HASH JOIN RIGHT OUTER             |                      | 41220 |    17M|       | 41507   (3)| 00:09:42 |
|   6 |      TABLE ACCESS FULL                | RISK_ISSUER          | 38013 |   705K|       |    39   (3)| 00:00:01 |
|*  7 |      HASH JOIN RIGHT OUTER            |                      | 41220 |    16M|       | 41467   (3)| 00:09:41 |
|   8 |       TABLE ACCESS FULL               | RISK_SEC_TYPE        |   156 |  2964 |       |     3   (0)| 00:00:01 |
|*  9 |       HASH JOIN RIGHT OUTER           |                      | 41220 |    15M|       | 41463   (3)| 00:09:41 |
|  10 |        TABLE ACCESS FULL              | RISK_RATINGS_REF     |   120 |  1080 |       |     3   (0)| 00:00:01 |
|* 11 |        HASH JOIN RIGHT OUTER          |                      | 41220 |    15M|       | 41459   (3)| 00:09:41 |
|  12 |         TABLE ACCESS FULL             | RISK_RATINGS_REF     |   120 |  1080 |       |     3   (0)| 00:00:01 |
|* 13 |         HASH JOIN                     |                      | 41220 |    15M|  8656K| 41455   (3)| 00:09:41 |
|* 14 |          HASH JOIN                    |                      | 41220 |  8171K|  8256K| 12878   (2)| 00:03:01 |
|* 15 |           HASH JOIN                   |                      | 41220 |  7769K|       |  5069   (1)| 00:01:11 |
|* 16 |            TABLE ACCESS FULL          | RISK_TERM_DETAIL     |  8094 |   695K|       |   255   (4)| 00:00:04 |
|  17 |            TABLE ACCESS BY INDEX ROWID| RISK_POSITION        |   303 | 21816 |       |     9   (0)| 00:00:01 |
|  18 |             NESTED LOOPS              |                      |   160K|    16M|       |  4812   (1)| 00:01:08 |
|* 19 |              TABLE ACCESS FULL        | RISK_LOAD_CONTROL    |   531 | 17523 |       |     9   (0)| 00:00:01 |
|* 20 |              INDEX RANGE SCAN         | RISK_POSITION_IDX1   |   303 |       |       |     2   (0)| 00:00:01 |
|  21 |           TABLE ACCESS FULL           | RISK_SCENARIO        |  2343K|    22M|       |  5320   (4)| 00:01:15 |
|  22 |          TABLE ACCESS FULL            | RISK_SENSITIVITY     |  2343K|   399M|       |  9943   (6)| 00:02:20 |
|* 23 |     HASH JOIN OUTER                   |                      |  3866 |  1042K|       |  6715   (1)| 00:01:35 |
|* 24 |      HASH JOIN RIGHT OUTER            |                      |  3866 |   970K|       |  6675   (1)| 00:01:34 |
|  25 |       TABLE ACCESS FULL               | RISK_SEC_TYPE        |   156 |  2964 |       |     3   (0)| 00:00:01 |
|* 26 |       HASH JOIN RIGHT OUTER           |                      |  3866 |   898K|       |  6672   (1)| 00:01:34 |
|  27 |        TABLE ACCESS FULL              | RISK_RATINGS_REF     |   120 |  1080 |       |     3   (0)| 00:00:01 |
|* 28 |        HASH JOIN RIGHT OUTER          |                      |  3866 |   864K|       |  6668   (1)| 00:01:34 |
|  29 |         TABLE ACCESS FULL             | RISK_RATINGS_REF     |   120 |  1080 |       |     3   (0)| 00:00:01 |
|* 30 |         HASH JOIN                     |                      |  3866 |   830K|  8256K|  6665   (1)| 00:01:34 |
|* 31 |          HASH JOIN                    |                      | 41220 |  7769K|       |  5069   (1)| 00:01:11 |
|* 32 |           TABLE ACCESS FULL           | RISK_TERM_DETAIL     |  8094 |   695K|       |   255   (4)| 00:00:04 |
|  33 |           TABLE ACCESS BY INDEX ROWID | RISK_POSITION        |   303 | 21816 |       |     9   (0)| 00:00:01 |
|  34 |            NESTED LOOPS               |                      |   160K|    16M|       |  4812   (1)| 00:01:08 |
|* 35 |             TABLE ACCESS FULL         | RISK_LOAD_CONTROL    |   531 | 17523 |       |     9   (0)| 00:00:01 |
|* 36 |             INDEX RANGE SCAN          | RISK_POSITION_IDX1   |   303 |       |       |     2   (0)| 00:00:01 |
|  37 |          TABLE ACCESS FULL            | RISK_SENSITIVITY_CLP |   219K|  5793K|       |   896   (2)| 00:00:13 |
|  38 |      TABLE ACCESS FULL                | RISK_ISSUER          | 38013 |   705K|       |    39   (3)| 00:00:01 |
----------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("RV"."RISK SEC TYPE ID"="SECT"."SEC_TYPE_ID")
   3 - filter("VALUE DATE"="LI_RISK"."GETLATESTRISKDATE"('LLI'))
   5 - access("TERM"."ISSUER_ID"="ISS"."ISSUER_ID"(+))
   7 - access("TERM"."SEC_TYPE_ID"="SECT"."SEC_TYPE_ID"(+))
   9 - access("TERM"."SP_RATING"="S"."ID"(+))
  11 - access("TERM"."MOODYS_RATING"="M"."ID"(+))
  13 - access("POS"."POSITION_ID"="SENS"."POSITION_ID")
  14 - access("POS"."POSITION_ID"="SCNR"."POSITION_ID")
  15 - access("POS"."SEC_ID"="TERM"."SEC_ID")
  16 - filter("TERM"."AXYSID" IS NOT NULL)
  19 - filter("CNTL"."FIRM_CODE"='LLI' AND "CNTL"."LOAD_STATUS"='PROCESSED')
  20 - access("CNTL"."LOAD_ID"="POS"."LOAD_ID")
  23 - access("TERM"."ISSUER_ID"="ISS"."ISSUER_ID"(+))
  24 - access("TERM"."SEC_TYPE_ID"="SECT"."SEC_TYPE_ID"(+))
  26 - access("TERM"."SP_RATING"="S"."ID"(+))
  28 - access("TERM"."MOODYS_RATING"="M"."ID"(+))
  30 - access("POS"."POSITION_ID"="SENS"."POSITION_ID")
  31 - access("POS"."SEC_ID"="TERM"."SEC_ID")
  32 - filter("TERM"."AXYSID" IS NOT NULL)
  35 - filter("CNTL"."FIRM_CODE"='LLI' AND "CNTL"."LOAD_STATUS"='PROCESSED')
  36 - access("CNTL"."LOAD_ID"="POS"."LOAD_ID")

SQL> 

SQL> set autotrace trace exp
SQL> select * FROM li_risk.risk_data_tw_v rv ,li_risk.risk_sec_type sect 
  2  WHERE "VALUE DATE" = to_date('3/17/2011','MM/DD/YYYY')
  3  AND rv."FIRM" = ('LLI') 
  4  AND rv."RISK SEC TYPE ID" = sect.SEC_TYPE_ID
  5  AND rv.AXYSID is not null;
Elapsed: 00:00:00.79

Execution Plan
----------------------------------------------------------
Plan hash value: 203326834

----------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |                           |    58 |   121K|   874   (1)| 00:00:13 |
|*  1 |  HASH JOIN                               |                           |    58 |   121K|   874   (1)| 00:00:13 |
|   2 |   TABLE ACCESS FULL                      | RISK_SEC_TYPE             |   156 |  5304 |     3   (0)| 00:00:01 |
|   3 |   VIEW                                   | RISK_DATA_TW_V            |    58 |   119K|   871   (1)| 00:00:13 |
|   4 |    UNION-ALL                             |                           |       |       |            |          |
|   5 |     TABLE ACCESS BY INDEX ROWID          | RISK_SENSITIVITY          |     1 |   179 |     3   (0)| 00:00:01 |
|   6 |      NESTED LOOPS                        |                           |    53 | 23214 |   592   (1)| 00:00:09 |
|*  7 |       HASH JOIN OUTER                    |                           |    53 | 13727 |   433   (1)| 00:00:07 |
|*  8 |        HASH JOIN OUTER                   |                           |    53 | 13250 |   430   (1)| 00:00:07 |
|   9 |         TABLE ACCESS BY INDEX ROWID      | RISK_SCENARIO             |     1 |    10 |     3   (0)| 00:00:01 |
|  10 |          NESTED LOOPS                    |                           |    53 | 12773 |   426   (1)| 00:00:06 |
|  11 |           NESTED LOOPS OUTER             |                           |    53 | 12243 |   267   (1)| 00:00:04 |
|* 12 |            HASH JOIN OUTER               |                           |    53 | 11236 |   230   (1)| 00:00:04 |
|  13 |             NESTED LOOPS                 |                           |    53 | 10229 |   227   (1)| 00:00:04 |
|  14 |              NESTED LOOPS                |                           |   208 | 21840 |    18   (0)| 00:00:01 |
|* 15 |               TABLE ACCESS FULL          | RISK_LOAD_CONTROL         |     1 |    33 |     9   (0)| 00:00:01 |
|  16 |               TABLE ACCESS BY INDEX ROWID| RISK_POSITION             |   303 | 21816 |     9   (0)| 00:00:01 |
|* 17 |                INDEX RANGE SCAN          | RISK_POSITION_IDX1        |   303 |       |     2   (0)| 00:00:01 |
|* 18 |              TABLE ACCESS BY INDEX ROWID | RISK_TERM_DETAIL          |     1 |    88 |     1   (0)| 00:00:01 |
|* 19 |               INDEX UNIQUE SCAN          | RISK_TERM_DETAIL_PK       |     1 |       |     0   (0)| 00:00:01 |
|  20 |             TABLE ACCESS FULL            | RISK_SEC_TYPE             |   156 |  2964 |     3   (0)| 00:00:01 |
|  21 |            TABLE ACCESS BY INDEX ROWID   | RISK_ISSUER               |     1 |    19 |     1   (0)| 00:00:01 |
|* 22 |             INDEX UNIQUE SCAN            | RISK_ISSUER_PK            |     1 |       |     0   (0)| 00:00:01 |
|* 23 |           INDEX RANGE SCAN               | RISK_SCENARIO_IDX1        |     1 |       |     2   (0)| 00:00:01 |
|  24 |         TABLE ACCESS FULL                | RISK_RATINGS_REF          |   120 |  1080 |     3   (0)| 00:00:01 |
|  25 |        TABLE ACCESS FULL                 | RISK_RATINGS_REF          |   120 |  1080 |     3   (0)| 00:00:01 |
|* 26 |       INDEX RANGE SCAN                   | RISK_SENSITIVITY_IDX1     |     1 |       |     2   (0)| 00:00:01 |
|  27 |     NESTED LOOPS OUTER                   |                           |     5 |  1380 |   279   (1)| 00:00:04 |
|* 28 |      HASH JOIN OUTER                     |                           |     5 |  1285 |   275   (1)| 00:00:04 |
|  29 |       NESTED LOOPS OUTER                 |                           |     5 |  1190 |   271   (0)| 00:00:04 |
|  30 |        NESTED LOOPS OUTER                |                           |     5 |  1145 |   268   (0)| 00:00:04 |
|  31 |         NESTED LOOPS                     |                           |     5 |  1100 |   266   (0)| 00:00:04 |
|  32 |          NESTED LOOPS                    |                           |    20 |  2640 |   246   (0)| 00:00:04 |
|  33 |           NESTED LOOPS                   |                           |   208 | 21840 |    18   (0)| 00:00:01 |
|* 34 |            TABLE ACCESS FULL             | RISK_LOAD_CONTROL         |     1 |    33 |     9   (0)| 00:00:01 |
|  35 |            TABLE ACCESS BY INDEX ROWID   | RISK_POSITION             |   303 | 21816 |     9   (0)| 00:00:01 |
|* 36 |             INDEX RANGE SCAN             | RISK_POSITION_IDX1        |   303 |       |     2   (0)| 00:00:01 |
|  37 |           TABLE ACCESS BY INDEX ROWID    | RISK_SENSITIVITY_CLP      |     1 |    27 |     2   (0)| 00:00:01 |
|* 38 |            INDEX RANGE SCAN              | RISK_SENSITIVITY_CLP_IDX1 |     1 |       |     1   (0)| 00:00:01 |
|* 39 |          TABLE ACCESS BY INDEX ROWID     | RISK_TERM_DETAIL          |     1 |    88 |     1   (0)| 00:00:01 |
|* 40 |           INDEX UNIQUE SCAN              | RISK_TERM_DETAIL_PK       |     1 |       |     0   (0)| 00:00:01 |
|  41 |         TABLE ACCESS BY INDEX ROWID      | RISK_RATINGS_REF          |     1 |     9 |     1   (0)| 00:00:01 |
|* 42 |          INDEX UNIQUE SCAN               | RISK_RATINGS_REF_PK       |     1 |       |     0   (0)| 00:00:01 |
|  43 |        TABLE ACCESS BY INDEX ROWID       | RISK_RATINGS_REF          |     1 |     9 |     1   (0)| 00:00:01 |
|* 44 |         INDEX UNIQUE SCAN                | RISK_RATINGS_REF_PK       |     1 |       |     0   (0)| 00:00:01 |
|  45 |       TABLE ACCESS FULL                  | RISK_SEC_TYPE             |   156 |  2964 |     3   (0)| 00:00:01 |
|  46 |      TABLE ACCESS BY INDEX ROWID         | RISK_ISSUER               |     1 |    19 |     1   (0)| 00:00:01 |
|* 47 |       INDEX UNIQUE SCAN                  | RISK_ISSUER_PK            |     1 |       |     0   (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("RV"."RISK SEC TYPE ID"="SECT"."SEC_TYPE_ID")
   7 - access("TERM"."SP_RATING"="S"."ID"(+))
   8 - access("TERM"."MOODYS_RATING"="M"."ID"(+))
  12 - access("TERM"."SEC_TYPE_ID"="SECT"."SEC_TYPE_ID"(+))
  15 - filter("CNTL"."VALUE_DT"=TO_DATE(' 2011-03-17 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
              "CNTL"."FIRM_CODE"='LLI' AND "CNTL"."LOAD_STATUS"='PROCESSED')
  17 - access("CNTL"."LOAD_ID"="POS"."LOAD_ID")
  18 - filter("TERM"."AXYSID" IS NOT NULL)
  19 - access("POS"."SEC_ID"="TERM"."SEC_ID")
  22 - access("TERM"."ISSUER_ID"="ISS"."ISSUER_ID"(+))
  23 - access("POS"."POSITION_ID"="SCNR"."POSITION_ID")
  26 - access("POS"."POSITION_ID"="SENS"."POSITION_ID")
  28 - access("TERM"."SEC_TYPE_ID"="SECT"."SEC_TYPE_ID"(+))
  34 - filter("CNTL"."VALUE_DT"=TO_DATE(' 2011-03-17 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
              "CNTL"."FIRM_CODE"='LLI' AND "CNTL"."LOAD_STATUS"='PROCESSED')
  36 - access("CNTL"."LOAD_ID"="POS"."LOAD_ID")
  38 - access("POS"."POSITION_ID"="SENS"."POSITION_ID")
  39 - filter("TERM"."AXYSID" IS NOT NULL)
  40 - access("POS"."SEC_ID"="TERM"."SEC_ID")
  42 - access("TERM"."MOODYS_RATING"="M"."ID"(+))
  44 - access("TERM"."SP_RATING"="S"."ID"(+))
  47 - access("TERM"."ISSUER_ID"="ISS"."ISSUER_ID"(+))

SQL> 

More to Explore

Performance

Get all the information about database performance in the Database Performance guide.