SYS_REFCURSOR takes more time than direct query execution

I have a stored proc which has 4 inputs and 10 output and all outputs are sys_refcursor type.
Among 10 ouputs, 1 cursor returns 4k+ records and all other cursors has 3 or 4 records and average 5 columns in each cursors. For this, it takes 8 sec to complete the execution. If we directly query, it gives output in .025 sec.
I verified code located the issue with cursor which returns 4k+ only.
The cursor opening from a temporary table (which has 4k+ records ) without any filter. The query which inserted into temporary is direct inserts only and i found nothing to modify there.
Can anyone suggest, how we can bring the results in less than 3 sec? This is really a challenge since the code needs to go live next week.
Any help appreciated.
Thanks
Renjish

I've just repeated the test in SQL*Plus on my test database.
Both the ref cursor and direct SQL took 4.75 seconds.
However, that time is not the time to execute the SQL statement, but the time it took SQL*Plus in my command window to print out the 3999 rows of results.
SQL> create or replace PROCEDURE TEST_PROC (O_OUTPUT OUT SYS_REFCURSOR) is
  2  BEGIN
  3    OPEN  O_OUTPUT FOR
  4      select 11 plan_num, 22  loc_num, 'aaa' loc_nm from dual connect by level < 4000;
  5  end;
  6  /
Procedure created.
SQL> set timing on
SQL> set linesize 1000
SQL> set serverout on
SQL> var o_output refcursor;
SQL> exec test_proc(:o_output);
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.04
SQL> print o_output;
  PLAN_NUM    LOC_NUM LOC
        11         22 aaa
        11         22 aaa
        11         22 aaa
        11         22 aaa
        11         22 aaa
3999 rows selected.
Elapsed: 00:00:04.75
SQL> select 11 plan_num, 22  loc_num, 'aaa' loc_nm from dual connect by level < 4000;
  PLAN_NUM    LOC_NUM LOC
        11         22 aaa
        11         22 aaa
        11         22 aaa
        11         22 aaa
        11         22 aaa
        11         22 aaa
3999 rows selected.
Elapsed: 00:00:04.75
That's the result I expect to see, both taking the same amount of time to do the same thing.
Please demonstrate how you are running it and getting different results.

Similar Messages

  • Automatic DOP take more time to execute query

    We upgraded database to oracle 11gR2. While testing Automatic DOP feature with our existing query it takes more time than with parallel.
    Note: No constrains or Index created on table to gain performance while loading data (5000records / sec)
    Os : Sun Solaris 64bit
    CPU = 8
    RAM = 7456M
    Default parameter settings:
    parallel_degree_policy               string      MANUAL
    parallel_degree_limit                string      CPU
    parallel_threads_per_cpu             integer     2
    arallel_degree_limit                 string      CPU
    cpu_count                            integer     8
    parallel_threads_per_cpu             integer     2
    resource_manager_cpu_allocation      integer     8
    Query:
    SELECT COUNT(*)
    from (
    SELECT
    /*+ FIRST_ROWS(50), PARALLEL */
    Query gets executed in 22minutes : execution plan
      COUNT(*)
          9600
    Elapsed: 00:22:10.71
    Execution Plan
    Plan hash value: 3765539975
    | Id  | Operation           | Name             | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    |   0 | SELECT STATEMENT    |                  |     1 |    21 |  2164K  (1)| 07:12:52 |       |   |
    |   1 |  SORT AGGREGATE     |                  |     1 |    21 |            |          |       |   |
    |   2 |   PARTITION RANGE OR|                  | 89030 |  1825K|  2164K  (1)| 07:12:52 |KEY(OR)|KEY(OR)|
    |*  3 |    TABLE ACCESS FULL| SUBSCRIBER_EVENT | 89030 |  1825K|  2164K  (1)| 07:12:52 |KEY(OR)|KEY(OR)|Automatic DOP Query: parameters set
    alter session set PARALLEL_DEGREE_POLICY = limited;
    alter session force parallel query ;Query:
    SELECT COUNT(*)
    from (
    SELECT /*+ FIRST_ROWS(50), PARALLEL*/
    This query takes more than 2hrs to execute
    COUNT(*)
          9600
    Elapsed: 02:07:48.81
    Execution Plan
    Plan hash value: 127536830
    | Id  | Operation              | Name             | Rows  | Bytes | Cost (%CPU)| Time     | Pstart|Pstop |    TQ   |IN-OUT| PQ Distrib |
    |   0 | SELECT STATEMENT       |                  |     1 |    21 |   150K  (1)| 00:30:01 |       |      |         |      |            |
    |   1 |  SORT AGGREGATE        |                  |     1 |    21 |            |          |       |      |         |      |            |
    |   2 |   PX COORDINATOR       |                  |       |       |            |          |       |      |         |      |            |
    |   3 |    PX SEND QC (RANDOM) | :TQ10000         |     1 |    21 |            |          |       |      |  Q1,00  | P->S | QC (RAND)  |
    |   4 |     SORT AGGREGATE     |                  |     1 |    21 |            |          |       |      |  Q1,00  | PCWP |            |
    |   5 |      PX BLOCK ITERATOR |                  | 89030 |  1825K|   150K  (1)| 00:30:01 |KEY(OR)|KEY(OR)|  Q1,00 | PCWC |            |
    |*  6 |       TABLE ACCESS FULL| SUBSCRIBER_EVENT | 89030 |  1825K|   150K  (1)| 00:30:01 |KEY(OR)|KEY(OR)|  Q1,00 | PCWP |            |
    Note
    - automatic DOP: Computed Degree of Parallelism is 16 because of degree limitcan some one help us to find out where we did wrong or any pointer will really helpful to resolve an issue.
    Edited by: Sachin B on May 11, 2010 4:05 AM

    Generated AWR report for ADOP
    Foreground Wait Events                       DB/Inst: HDB/hdb  Snaps: 158-161
    -> s  - second, ms - millisecond -    1000th of a second
    -> Only events with Total Wait Time (s) >= .001 are shown
    -> ordered by wait time desc, waits desc (idle events last)
    -> %Timeouts: value of 0 indicates value was < .5%.  Value of null is truly 0
                                                                 Avg
                                            %Time Total Wait    wait    Waits   % DB
    Event                             Waits -outs   Time (s)    (ms)     /txn   time
    direct path read                522,173     0    125,051     239    628.4   99.3
    db file sequential read             663     0        156     235      0.8     .1
    log file sync                       165     0        117     712      0.2     .1
    Disk file operations I/O            267     0         63     236      0.3     .1
    db file scattered read              251     0         36     145      0.3     .0
    control file sequential re          217     0         32     149      0.3     .0
    library cache load lock               2     0         10    4797      0.0     .0
    cursor: pin S wait on X               3     0          9    3149      0.0     .0
    read by other session                 5     0          2     429      0.0     .0
    kfk: async disk IO              613,170     0          2       0    737.9     .0
    sort segment request                  1   100          1    1007      0.0     .0
    os thread startup                    16     0          1      43      0.0     .0
    direct path write temp                1     0          1     527      0.0     .0
    latch free                           51     0          0       2      0.1     .0
    kksfbc child completion               1   100          0      59      0.0     .0
    latch: cache buffers chain           19     0          0       2      0.0     .0
    latch: shared pool                   36     0          0       1      0.0     .0
    PX Deq: Slave Session Stat           21     0          0       1      0.0     .0
    library cache: mutex X               45     0          0       1      0.1     .0
    CSS initialization                    2     0          0       6      0.0     .0
    enq: KO - fast object chec            1     0          0      11      0.0     .0
    buffer busy waits                     3     0          0       1      0.0     .0
    cursor: pin S                         9     0          0       0      0.0     .0
    CSS operation: action                 2     0          0       1      0.0     .0
    direct path write                     1     0          0       2      0.0     .0
    jobq slave wait                  17,554   100      8,942     509     21.1
    PX Deq: Execute Reply             4,060    95      7,870    1938      4.9
    SQL*Net message from clien           96     0      5,756   59962      0.1
    PX Deq: Execution Msg               618    56        712    1152      0.7
    KSV master wait                      11     0          0       2      0.0
    PX Deq: Join ACK                     16     0          0       1      0.0
    PX Deq: Parse Reply                  14     0          0       1      0.0
    Background Wait Events                       DB/Inst: HDB/hdb  Snaps: 158-161
    -> ordered by wait time desc, waits desc (idle events last)
    -> Only events with Total Wait Time (s) >= .001 are shown
    -> %Timeouts: value of 0 indicates value was < .5%.  Value of null is truly 0
                                                                 Avg
                                            %Time Total Wait    wait    Waits   % bg
    Event                             Waits -outs   Time (s)    (ms)     /txn   time
    control file sequential re        6,249     0      2,375     380      7.5   55.6
    control file parallel writ        2,003     0        744     371      2.4   17.4
    db file parallel write            1,604     0        503     313      1.9   11.8
    log file parallel write             861     0        320     371      1.0    7.5
    db file sequential read             363     0        151     415      0.4    3.5
    db file scattered read              152     0         64     421      0.2    1.5
    Disk file operations I/O            276     0         21      77      0.3     .5
    os thread startup                   316     0         15      48      0.4     .4
    ADR block file read                  24     0         11     450      0.0     .3
    rdbms ipc reply                      17    12          7     403      0.0     .2
    Data file init write                  6     0          6    1016      0.0     .1
    direct path write                    21     0          6     287      0.0     .1
    log file sync                         7     0          6     796      0.0     .1
    ADR block file write                 10     0          4     414      0.0     .1
    enq: JS - queue lock                  1     0          3    2535      0.0     .1
    ASM file metadata operatio        1,801     0          2       1      2.2     .0
    db file parallel read                30     0          1      40      0.0     .0
    kfk: async disk IO                  955     0          1       1      1.1     .0
    db file single write                  1     0          0     415      0.0     .0
    reliable message                     10     0          0      23      0.0     .0
    latch: shared pool                   75     0          0       2      0.1     .0
    latch: call allocation               26     0          0       2      0.0     .0
    CSS initialization                    7     0          0       6      0.0     .0
    asynch descriptor resize            352   100          0       0      0.4     .0
    undo segment extension                2   100          0       5      0.0     .0
    CSS operation: action                 9     0          0       1      0.0     .0
    CSS operation: query                 42     0          0       0      0.1     .0
    latch: parallel query allo            4     0          0       0      0.0     .0
    rdbms ipc message                37,948    97    104,599    2756     45.7
    DIAG idle wait                   16,762   100     16,927    1010     20.2
    ASM background timer              1,724     0      8,467    4912      2.1
    shared server idle wait             282   100      8,465   30019      0.3
    pmon timer                        3,123    90      8,465    2711      3.8
    wait for unread message on        8,381   100      8,465    1010     10.1
    dispatcher timer                    141   100      8,463   60019      0.2
    Streams AQ: qmn coordinato          604    50      8,462   14010      0.7
    Streams AQ: qmn slave idle          304     0      8,462   27836      0.4
    smon timer                           35    71      8,382  239496      0.0
    Space Manager: slave idle         1,621    99      8,083    4986      2.0
    PX Idle Wait                      2,392    99      4,739    1981      2.9
    class slave wait                     46     0        623   13546      0.1
    KSV master wait                       2     0          0      27      0.0
    SQL*Net message from clien            7     0          0       1      0.0
    Wait Event Histogram                         DB/Inst: HDB/hdb  Snaps: 158-161
    -> Units for Total Waits column: K is 1000, M is 1000000, G is 1000000000
    -> % of Waits: value of .0 indicates value was <.05%; value of null is truly 0
    -> % of Waits: column heading of <=1s is truly <1024ms, >1s is truly >=1024ms
    -> Ordered by Event (idle events last)
                                                        % of Waits
                               Total
    Event                      Waits  <1ms  <2ms  <4ms  <8ms <16ms <32ms  <=1s   >1s
    ADR block file read           24                                     100.0
    ADR block file write          10                                     100.0
    ADR file lock                 12 100.0
    ASM file metadata operatio  1812  99.0    .3    .4                      .2    .1
    CSS initialization             9                   100.0
    CSS operation: action         11  90.9   9.1
    CSS operation: query          54 100.0
    Data file init write           6        16.7  16.7                    16.7  50.0
    Disk file operations I/O     533  88.7   2.6    .6               1.5    .2   6.4
    PX Deq: Signal ACK EXT         4 100.0
    PX Deq: Signal ACK RSG         2 100.0
    PX Deq: Slave Session Stat    21  42.9  28.6  28.6
    SQL*Net break/reset to cli     6 100.0
    SQL*Net message to client    102 100.0
    SQL*Net more data to clien     4 100.0
    asynch descriptor resize     527 100.0
    buffer busy waits              4  75.0        25.0
    control file parallel writ  2003   9.3    .5          .0    .1        90.0
    control file sequential re  6466  10.6    .0    .0    .0    .1    .2  89.0
    cursor: pin S                  9 100.0
    cursor: pin S wait on X        3                          33.3  33.3        33.3
    db file parallel read         30                           6.7  30.0  63.3
    db file parallel write      1604   7.4    .1                .6  16.5  75.5
    db file scattered read       403   3.7    .2   2.5  13.6  14.9   3.5  61.5
    db file sequential read     1017  12.3    .8   2.3   7.3   6.6   2.0  68.8
    db file single write           1                                     100.0
    direct path read           522.2   2.2   2.1    .1    .0   1.8  17.9  75.9
    direct path write             22         4.5                     4.5  90.9
    direct path write temp         1                                     100.0
    enq: JS - queue lock           1                                           100.0
    enq: KO - fast object chec     1                         100.0
    enq: PS - contention           1 100.0
    kfk: async disk IO         614.1 100.0                                  .0
    kksfbc child completion        1                                     100.0
    latch free                    58  46.6  27.6  15.5  10.3
    latch: cache buffers chain    19  36.8  10.5  52.6
    latch: call allocation        26  76.9  11.5         7.7         3.8
    latch: parallel query allo     4 100.0
    latch: shared pool           111  44.1  28.8  27.0
    library cache load lock        2                                           100.0
    library cache: mutex X        45  84.4   8.9   4.4   2.2
    log file parallel write      861  10.0          .1    .1              89.5    .2
    log file sync                172   6.4                                90.1   3.5
    os thread startup            332                                     100.0
    rdbms ipc reply               18  72.2                                11.1  16.7
    read by other session          5                                     100.0
    reliable message              11  81.8   9.1                           9.1
    sort segment request           1                                     100.0
    undo segment extension         2  50.0                    50.0
    ASM background timer        1724    .8    .6    .1                      .6  97.9
    DIAG idle wait             16.8K                                     100.0
    KSV master wait               13   7.7  23.1  61.5                     7.7
    PX Deq: Execute Reply       4060    .4          .0    .0          .1   3.4  96.0
    PX Deq: Execution Msg        617  34.7   1.5   2.4   1.5   1.5    .2    .8  57.5
    PX Deq: Join ACK              16  93.8                     6.3
    PX Deq: Parse Reply           14  71.4   7.1  14.3   7.1
    PX Idle Wait                2384    .0                                  .6  99.3
    SQL*Net message from clien   103  82.5         1.0   1.9               1.0  13.6
    Space Manager: slave idle   1621                                        .2  99.8
    Streams AQ: qmn coordinato   604  50.0                                      50.0
    Wait Event Histogram                         DB/Inst: HDB/hdb  Snaps: 158-161
    -> Units for Total Waits column: K is 1000, M is 1000000, G is 1000000000
    -> % of Waits: value of .0 indicates value was <.05%; value of null is truly 0
    -> % of Waits: column heading of <=1s is truly <1024ms, >1s is truly >=1024ms
    -> Ordered by Event (idle events last)Edited by: Sachin B on May 11, 2010 4:52 AM

  • Count (*)  for select stmt take more time than  execute a that sql stmt

    HI
    count (*) for select stmt take more time than execute a that sql stmt
    executing particular select stmt take 2.47 mins but select stmt is using the /*+parallel*/ (sql optimer) in that sql  command for faster execute .
    but if i tried to find out total number of rows in that query it takes more time ..
    almost 2.30 hrs still running to find count(col)
    please help me to get count of row faster.
    thanks in advance...

    797525 wrote:
    HI
    count (*) for select stmt take more time than execute a that sql stmt
    executing particular select stmt take 2.47 mins but select stmt is using the /*+parallel*/ (sql optimer) in that sql  command for faster execute .
    but if i tried to find out total number of rows in that query it takes more time ..
    almost 2.30 hrs still running to find count(col)
    please help me to get count of row faster.
    thanks in advance...That may be because your client is displaying only the first few records when you are running the "SELECT *". But when you run "COUNT(*)", the whole records has to be counted.
    As already mentined please read teh FAQ to post tuning questions.

  • Delete DML statment takes more time than Update or Insert.

    i want to know whether a delete statement takes more time than an update or insert DML command. Please help in solving the doubt.
    Regards.

    i do not get good answers sometimes, so, i ask again.I think Alex answer to your post was quite complete. If you missed some information, continue the same post, instead of opening a new thread with the same subject and content.
    You should be satistied with the answers you get, I also answered your question about global indexes, and I do think my answer was very complete. You may ask more if you want, but stop multiposting please. It is quite annoying.
    Ok, have a nice day

  • Why import of change request in production takes more time than quality?

    Hello All,
                 why import of change request in production takes more time than import into quality?

    Hi jahangeer,
    I believe it takes same time to import a request in both quality and production as they will be in sync.
    Even then if it takes more time in production that may depend on the change request.
    Thanks
    Pavan

  • When i put my Mac for sleep it takes more time than normal ( 20 secs). Sometimes, coming back from sleep the system is not responding (freeze).

    When i put my Mac for sleep it takes more time than normal (>20 secs). Sometimes, coming back from sleep the system is not responding (freeze).

    Perform SMC and NVRAM resets:
    http://support.apple.com/en-us/HT201295
    http://support.apple.com/en-us/HT204063
    The try a safe boot:
    http://support.apple.com/en-us/HT201262
    Any change?
    Ciao.

  • Zfs destroy command takes more time than usual

    Hi,
    When I run the destroy command it takes more than usual.
    I have exported the lun form this zfs volume ealier.
    Later I have removed the lun view and deleted the lun.After that when I run the below command it takes more time (more than 5mins and still running)
    #zfs destroy storage/lu

    Is there a way to quickly destroy the filesystem.
    It looks it removing the allocated files.
                  capacity     operations    bandwidth
    pool        alloc   free   read  write   read  write
    storage0     107G   116T  3.32K  2.52K  3.48M  37.7M
    storage0     107G   116T    840    551  1.80M  6.01M
    storage0     106G   116T    273      0   586K      0
    storage0     106G   116T  1.19K      0  2.61M      0
    storage0     106G   116T  1.47K      0  3.20M  

  • Calc takes more time than previous

    Hi All,
    I have a problem with the calc as this calc take more time to execute please help!!!
    I have included calc cache high in the .cfg file.
    FIX (&As, &Af, &C,&RM, @RELATIVE("Pr",0), @RELATIVE("MS",0), @RELATIVE("Pt",0), @RELATIVE("Rn",0),@RELATIVE("Ll",0))
    CLEARDATA "RI";
    /* 22 Comment */
    FIX("100")
    "RI" = @ROUND ((("RDL")/("SBE"->"RDL"->"TMS"->"TP"->"TR"->"AF"->"Boom")),8);
    ENDFIX
    FIX("200")
    "RI" = @ROUND ((("RDL")/("ODE"->"RDL"->"TMS"->"T_P"->"TR"->"AF"->"Boom")),8);
    ENDFIX
    Appriciate your help.
    Regards,
    Mink.

    Mink,
    If the calculation script ,which you are using is the same which performed better before and data being processes is same ( i mean data might not have exceptionally grown more).Then, there must be other reasons like server side OS , processor or memory issues.Consult sys admin .Atleast you ll be sure that there is nothing wrong with systems.
    To fine tune the calc , i think , you can minimise fix statements . But,thats not the current issue though
    Sandeep Reddy Enti
    HCC
    http://analytiks.blogspot.com

  • Threaded program takes more time than running serially!

    Hello All
    Ive converted my program into a threaded application so as to improve speed. However i found that after converting the execution time is more than it was when the program was non threaded. Im not having any synchronised methods. Any idea what could be the reason ?
    Thanx in advance.

    First, if you are doing I/O, then maybe that's what's taking the time and not the threads. One question that hasn't been asked about your problem:
    How much is the time difference? If it takes like 10 seconds to run the one and 10 minutes to run the threaded version, then that's a big difference. But if it is like 10 seconds vs 11 seconds, I think you should reconsider if it matters so much.
    One analogy that comes to mind about multiple threads vs. sequential code is this:
    With sequentially run code, all the code segments are lined up in order and they all go thru the door one after the other. As one goes thru they all move up closer, thus they know who's going first.
    With multi-threaded code, all the code segments sorta pile up around the door in a big crowd. Some push go thru one at a time while others let them (priority), while other times 2 go for the door at the same time and there might be a few moments of "oh, after you", "no, after you", "oh no, I insist, after you" before one goes thru. So that could introduce some delay.

  • Why HTML report takes more time than the PDF one?

    Hi,
    I have created report in Reports 6i. When I run the report on the web with FORMAT = PDF it runs very fast and shows all the pages in 2 minutes. But when I run with
    FORMAT = HTML it shows the first page in 2 minutes, after that it takes lot of time to show the remaining pages. If the total pages are more than 40, the browser just freezes
    Can somebody give me the reason?
    Is there any way to rectify this?
    Thanks alot.
    Ram.

    Hi Senthil,
    Iam running with the below parameters.
    Format : HTML
    Destination : Screen.
    My default browser is IE. When I try to run using Netscape it showed only 1 page out of 34 pages.
    When I run Format as PDF it is faster but font size is small when it opens up. Offcourse user can zoom it.
    If I increase the report width from 11 to 14 the font size becomes very small when it open up in browser.
    Is there any way that I can set up zoom when I run as PDF?
    Thanks for your help.
    Ram.

  • 11g takes more time than 9i to execute

    Hi
    We are trying to move 9.1.0.7 to 11.1.0.6 on Solaris 5.10. When we are trying to compare the performance on both database using the same SQL, it is noticed that 11g is taking about 10minutes more than 9i. The schema, objects, data, ... everything is similar. Can anyone please give an idea on why this difference?
    SQL is:
    --sql_id='bt04cp43n28m3'
    --hash_value=2461919517
    INSERT /*+APPEND */INTO act_com
    (act_id, rep, ytd_fee, ytd_commission, mtd_fee, mtd_commission,
    monthly_avg_fee, monthly_avg_comm, ttm_fee, ttm_commission,
    curr_dec_fee, curr_dec_comm, curr_nov_fee, curr_nov_comm,
    curr_oct_fee, curr_oct_comm, curr_sep_fee, curr_sep_comm,
    curr_aug_fee, curr_aug_comm, curr_jul_fee, curr_jul_comm,
    curr_jun_fee, curr_jun_comm, curr_may_fee, curr_may_comm,
    curr_apr_fee, curr_apr_comm, curr_mar_fee, curr_mar_comm,
    curr_feb_fee, curr_feb_comm, curr_jan_fee, curr_jan_comm,
    yr1_dec_fee, yr1_dec_comm, yr1_nov_fee, yr1_nov_comm,
    yr1_oct_fee, yr1_oct_comm, yr1_sep_fee, yr1_sep_comm,
    yr1_aug_fee, yr1_aug_comm, yr1_jul_fee, yr1_jul_comm,
    yr1_jun_fee, yr1_jun_comm, yr1_may_fee, yr1_may_comm,
    yr1_apr_fee, yr1_apr_comm, yr1_mar_fee, yr1_mar_comm,
    yr1_feb_fee, yr1_feb_comm, yr1_jan_fee, yr1_jan_comm,
    yr2_dec_fee, yr2_dec_comm, yr2_nov_fee, yr2_nov_comm,
    yr2_oct_fee, yr2_oct_comm, yr2_sep_fee, yr2_sep_comm,
    yr2_aug_fee, yr2_aug_comm, yr2_jul_fee, yr2_jul_comm,
    yr2_jun_fee, yr2_jun_comm, yr2_may_fee, yr2_may_comm,
    yr2_apr_fee, yr2_apr_comm, yr2_mar_fee, yr2_mar_comm,
    yr2_feb_fee, yr2_feb_comm, yr2_jan_fee, yr2_jan_comm,
    tot_fee_prev_day, tot_comm_prev_day)
    SELECT act.acct_no, x.rep,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr)
    THEN x.dollar_amt
    ELSE 0
    END
    ) ytd_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr)
    THEN x.dollar_amt
    ELSE 0
    END
    ) ytd_commission,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr AND curr_mm = mm)
    THEN x.dollar_amt
    ELSE 0
    END
    ) mtd_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr AND curr_mm = mm)
    THEN x.dollar_amt
    ELSE 0
    END
    ) mtd_comm,
    SUM (CASE
    WHEN ( x.cf_ind = 'F'
    AND ( (yr = curr_yr - 1 AND mm >= curr_mm)
    OR (yr = curr_yr AND mm < curr_mm)
    THEN x.dollar_amt
    ELSE 0
    END
    / 12 monthly_avg_fee,
    SUM (CASE
    WHEN ( x.cf_ind = 'C'
    AND ( (yr = curr_yr - 1 AND mm >= curr_mm)
    OR (yr = curr_yr AND mm < curr_mm)
    THEN x.dollar_amt
    ELSE 0
    END
    / 12 monthly_avg_comm,
    SUM (CASE
    WHEN ( x.cf_ind = 'F'
    AND ( (yr = curr_yr - 1 AND mm > curr_mm)
    OR (yr = curr_yr AND mm <= curr_mm)
    THEN x.dollar_amt
    ELSE 0
    END
    ) ttm_fee,
    SUM (CASE
    WHEN ( x.cf_ind = 'C'
    AND ( (yr = curr_yr - 1 AND mm > curr_mm)
    OR (yr = curr_yr AND mm <= curr_mm)
    THEN x.dollar_amt
    ELSE 0
    END
    ) ttm_commission,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 12)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_dec_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 12)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_dec_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 11)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_nov_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 11)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_nov_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 10)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_oct_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 10)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_oct_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 9)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_sep_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 9)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_sep_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 8)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_aug_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 8)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_aug_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 7)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_jul_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 7)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_jul_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 6)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_jun_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 6)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_jun_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 5)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_may_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 5)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_may_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 4)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_apr_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 4)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_apr_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 3)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_mar_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 3)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_mar_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 2)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_feb_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 2)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_feb_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr AND mm = 1)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_jan_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr AND mm = 1)
    THEN x.dollar_amt
    ELSE 0
    END
    ) curr_jan_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 12)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_dec_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 12)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_dec_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 11)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_nov_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 11)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_nov_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 10)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_oct_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 10)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_oct_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 9)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_sep_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 9)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_sep_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 8)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_aug_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 8)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_aug_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 7)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_jul_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 7)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_jul_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 6)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_jun_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 6)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_jun_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 5)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_may_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 5)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_may_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 4)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_apr_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 4)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_apr_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 3)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_mar_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 3)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_mar_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 2)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_feb_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 2)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_feb_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 1 AND mm = 1)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_jan_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 1 AND mm = 1)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr1_jan_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 12)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_dec_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 12)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_dec_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 11)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_nov_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 11)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_nov_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 10)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_oct_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 10)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_oct_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 9)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_sep_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 9)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_sep_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 8)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_aug_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 8)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_aug_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 7)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_jul_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 7)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_jul_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 6)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_jun_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 6)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_jun_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 5)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_may_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 5)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_may_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 4)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_apr_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 4)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_apr_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 3)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_mar_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 3)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_mar_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 2)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_feb_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 2)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_feb_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND yr = curr_yr - 2 AND mm = 1)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_jan_fee,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND yr = curr_yr - 2 AND mm = 1)
    THEN x.dollar_amt
    ELSE 0
    END
    ) yr2_jan_comm,
    SUM (CASE
    WHEN (x.cf_ind = 'F' AND asof_cymd = bus_day)
    THEN x.dollar_amt
    ELSE 0
    END
    ) tot_fee_prev_day,
    SUM (CASE
    WHEN (x.cf_ind = 'C' AND asof_cymd = bus_day)
    THEN x.dollar_amt
    ELSE 0
    END
    ) tot_comm_prev_day
    FROM (SELECT acct_no, status
    FROM action_tab
    UNION
    SELECT '0' acct_no, 'AC' status
    FROM DUAL) act,
    (SELECT TO_NUMBER (TO_CHAR (TO_DATE (NVL (asof_cymd, trade_cymd),
    'YYYY-MM-DD'
    'YYYY'
    ) yr,
    TO_NUMBER (TO_CHAR (TO_DATE (NVL (asof_cymd, trade_cymd),
    'YYYY-MM-DD'
    'MM'
    ) mm,
    TO_NUMBER (TO_CHAR (h_inner.bus_day, 'yyyy')) curr_yr,
    TO_NUMBER (TO_CHAR (h_inner.bus_day, 'mm')) curr_mm,
    rep_commission,
    TO_DATE (NVL (asof_cymd, trade_cymd),
    'YYYY-MM-DD'
    ) asof_cymd,
    c.acct_no, rep_full rep, f.acct_no fba_acct,
    CASE
    WHEN ( TO_DATE (f.close_cymd, 'YYYY-MM-DD') <=
    SYSDATE
    OR f.acct_no IS NULL
    THEN 'C'
    ELSE 'F'
    END cf_ind,
    CASE
    WHEN (adj_commission != 0
    AND adj_commission IS NOT NULL
    THEN adj_commission
    ELSE NVL (commission, 0) + NVL (mark_up_down, 0)
    END dollar_amt
    FROM coding_tab c, fbaact_tab f, hist_dt_ctrl_tab h_inner
    WHERE c.acct_no = f.acct_no(+)) x,
    hist_dt_ctrl_tab
    WHERE act.acct_no = x.acct_no
    AND x.rep IS NOT NULL
    --AND act.rep = x.rep
    AND act.status IN ('AC', 'IN')
    GROUP BY act.acct_no, x.rep
    Thanks in advance.

    Hi
    The details given below.
    Execution Plan on 9i
    1.00     2,412.00     SELECT STATEMENT      93,164.00     260,496.00          93,164.00     CHOOSE
    2.00     2,412.00     -SORT GROUP BY      93,164.00     260,496.00          93,164.00     
    3.00     8,684,104.00     --NESTED LOOPS OUTER      17,410.00     937,883,232.00          17,410.00     
    4.00     8,684,104.00     ---HASH JOIN      17,410.00     772,885,256.00          17,410.00     
    5.00     538,055.00     ----MERGE JOIN CARTESIAN      5,632.00     28,516,915.00          5,632.00     
    6.00     1.00     -----MERGE JOIN CARTESIAN      6.00     14.00          6.00     
    7.00     1.00     ------TABLE ACCESS FULL HIST_DT_CTRL     3.00     7.00          3.00     ANALYZED
    7.00     1.00     ------BUFFER SORT      3.00     7.00          3.00     
    8.00     1.00     -------TABLE ACCESS FULL HIST_DT_CTRL     3.00     7.00          3.00     ANALYZED
    6.00     538,055.00     -----BUFFER SORT      5,629.00     20,984,145.00          5,629.00     
    7.00     538,055.00     ------VIEW      5,626.00     20,984,145.00               
    8.00     538,055.00     -------SORT UNIQUE      5,626.00     5,298,870.00          5,599.00     
    9.00          --------UNION-ALL                          
    10.00     529,887.00     ---------TABLE ACCESS FULL ACTION_TAB     4,164.00     5,298,870.00          4,164.00     ANALYZED
    10.00     8,168.00     ---------TABLE ACCESS FULL DUAL     11.00               11.00     
    5.00     3,518,688.00     ----TABLE ACCESS FULL CODING_TAB     3,978.00     126,672,768.00          3,978.00     ANALYZED
    4.00     1.00     ---TABLE ACCESS BY INDEX ROWID FBAACT_TAB          19.00               ANALYZED
    5.00     1.00     ----INDEX UNIQUE SCAN FBA_ACT_PK_ACCT_NO                         ANALYZED
    Execution Plan on 11g
    1.00     2,399.00     SELECT STATEMENT      37,681.00     271,087.00     17,370,453,529.00     35,293.00     ALL_ROWS
    2.00     2,399.00     -HASH GROUP BY      37,681.00     271,087.00     17,370,453,529.00     35,293.00     
    3.00     10,291,120.00     --HASH JOIN RIGHT OUTER      36,195.00     1,162,896,560.00     6,562,221,120.00     35,293.00     
    4.00     1.00     ---TABLE ACCESS FULL FBAACT_TAB     2.00     19.00     7,121.00     2.00     ANALYZED
    4.00     10,291,120.00     ---HASH JOIN      36,051.00     967,365,280.00     5,529,464,283.00     35,291.00     
    5.00     660,746.00     ----MERGE JOIN CARTESIAN      14,778.00     38,323,268.00     2,126,486,738.00     14,486.00     
    6.00     1.00     -----MERGE JOIN CARTESIAN      10.00     16.00     185,497.00     10.00     
    7.00     1.00     ------TABLE ACCESS FULL HISTDT_CTRL     5.00     8.00     92,749.00     5.00     ANALYZED
    7.00     1.00     ------BUFFER SORT      5.00     8.00     92,749.00     5.00     
    8.00     1.00     -------TABLE ACCESS FULL HISTDT_CTRL     5.00     8.00     92,749.00     5.00     ANALYZED
    6.00     660,746.00     -----BUFFER SORT      14,773.00     27,751,332.00     2,126,393,989.00     14,481.00     
    7.00     660,746.00     ------VIEW      14,768.00     27,751,332.00     2,126,301,241.00     14,476.00     
    8.00     660,746.00     -------SORT UNIQUE      14,768.00     6,607,450.00     2,119,018,839.00     14,474.00     
    9.00          --------UNION-ALL                          
    10.00     660,745.00     ---------TABLE ACCESS FULL ACTION_TAB     12,058.00     6,607,450.00     1,494,346,997.00     11,853.00     ANALYZED
    10.00     1.00     ---------FAST DUAL      2.00          7,271.00     2.00     
    5.00     3,418,417.00     ----TABLE ACCESS FULL CODING_TAB     11,116.00     123,063,012.00     1,823,935,730.00     10,865.00     ANALYZED
    The differences in INIT Parameters
    9i 11g
    multi_block_read_count 16 128
    optimizer_mode choose all_rows
    other h/w and load related
    CPUs 8@900MHZ 8@1200MHZ
    load used by many QA users just testing to make sure
    all our cronjobs are running
    fine or not
    the above mentioned SQL is part of one of the processes, takes about 41 min on 9i and the same taking about 52-56 minutes on 11g.
    Also, I took out every in-line SELECT statement and ran in both envs. looks 11g is executing them fast. But as a whole it takes about 10-12 mins more on 11g. So
    I suspect that its problem with INSERT statement. So I just wrote a simple PL/SQL block to insert 1m records and tested on both.
    INSERTION OF 1M records 1:46 min 2:06 min
    count(*) 0:0.35 sec 0:0.17 sec
    delete 0:28.9 sec 0:36.72 sec
    rollback 0:32.19 sec 0:41.36 sec

  • Return value from database function taking a lot more time than the query

    Hi guys,
    I have a Query that does a call to a database function. The function takes in a few parameters and returns a Date. Now, the query within the function takes barely .05 seconds. However, doing a select get_join_dates from dual is taking almost 6 seconds for each call.
    Here is the Query:
    select s.student_id, s.student_name, s.organization_code
    from   student s
    where  s.student_id = :p_student_id
    and    s.student_enrollment_date = get_join_dates( :p_year,
                                                       :p_month,
                                                       :p_student_id,
                                                       s.organization_code );And here is the database function. The select inside this function barely takes 0.05 seconds per call. This function gets called 3 times in my case as there are 3 records in the org_body table for this student.
    create or replace function
    get_join_dates( p_yyyy in org_body.fiscal_yyyy%type,
                           p_month in  org_body.fiscal_mm%type,
                           p_student_id in student.student_id%type,
                           p_organization_code in org_body.organization_code%type) return date as
        t_enrollment_date  date;
        cursor cur_latest_enrollment_date is
          select max(enrollment_date)
          from   org_body
          where  fiscal_yyyy = p_yyyy
          and    fiscal_mm = p_month
          and    student_id = p_student_id
          and    organization_code = p_organization_code;
      BEGIN
        open cur_latest_enrollment_date ;
        fetch cur_latest_enrollment_date into t_enrollment_date;
        close cur_latest_enrollment_date ;
        return t_enrollment_date;
      exception
        when others then
          null;
    end;owever, when I run the following statement below, it takes close to 6 seconds to retrieve a record. In turn, my Query is becoming really slow and taking almost 35 seconds. Imagine that with more records.
    select get_join_dates( 2010, '01', '2167543', 'PSYCH01' ) from dual;If I run my query with this condition below, it takes 0.5 seconds.
    select s.student_id, s.student_name, s.organization_code
    from   student s
    where  s.student_id = :p_student_id
    and      s.student_enrollment_date = '01-JAN-10'Any ideas would be greatly appreciated.

    Any reason why you are doing this with the stored function?
    You could just do this with SQL. Embed the query in the function as a subquery in your initial query from STUDENT.
    select s.student_id, s.student_name, s.organization_code
    from   student s
    where  s.student_id = :p_student_id
    and    s.student_enrollment_date =
    (select max(enrollment_date)
          from   org_body
          where  fiscal_yyyy = :p_year
          and    fiscal_mm = :p_month
          and    student_id = s.student_id
          and    organization_code = s.organization_code);Why your function is not performing: I cannot say that with the information you have provided.
    Maybe sqltrace a call and see what the reason is.

  • Threaded program takes more time than executing serially!

    Hello All
    Ive converted my program into a threaded application so as to improve speed. However i found that after converting the execution time is more than it was when the program was non threaded. Im not having any synchronised methods. Any idea what could be the reason ?
    Thanx in advance.

    Putting aside fstreams amusing comment, I suspect your
    theads are never yielding (they are sitting in a tight
    loop, thus taking all available procesor power). Try
    adding Thread.sleep(0) at som point in the loop.No. If you just want to encourage one thread to give another thread a turn, use yield, not sleep.
    Note, though, that this may not help your situation. As was pointed out, on a single CPU machine, the only way a multithreaded program will run faster (by which I mean total wall-clock time start to finish) than its single-threaded equivalent is if the 1-thread version spends a lot of time waiting for IO when it could be doing something else. (If it's waiting for IO, but that IO is needed for the big number crunching, then putting the crunching in another thread won't make things any faster.)
    On the other hand, if by "faster" you're referring to a more responsive GUI, then, yes, in general you might expect better GUI response be putting non-GUI stuff in a different thread, but there's no guarantee. Depending on what the other thread does, how much work your GUI has to do, how your VM's scheduler works, how you've split up the work, etc., it may not be any better.
    I know that's not very specific, but neither was your question.

  • Row Insert in Timesten takes more time than Oracle

    Hi,
    I have a Timesten IMDB (11.2.1.8.0 (64 bit Linux/x86_64) with an underlying Oracle Database 11Gr2.
    Sys.odbc.ini entry is :
    [DSN_NAME]
    Driver=/application/TimesTen/matrix/lib/libtten.so
    DataStore=/application/TimesTen/DSN_NAME_datastore/DSN_NAME_DS_DIR
    LogDir=/logs_timeten/DSN_NAME_logdir
    PermSize=8000
    TempSize=250
    PLSQL=1
    DatabaseCharacterSet=WE8MSWIN1252
    OracleNetServiceName=DBNAME
    Connections=500
    PassThrough=0
    SQLQueryTimeout=250
    LogBufMB=512
    LogFileSize=512
    LogPurge=1
    When I try to insert a simple row in a table in an asyc cache group in Timesten it takes 3 ms (it has 6 indexes on it). On removing 4 indexes the performance improves to 1 ms. However inserting the same row on Oracle (with 6 indexes) takes 1.2 ms.
    How can we improve the insert row performance in Timesten ? Kindly assist.
    Regards,
    Karan
    PS: During the test run, we monitored deadlocks and log buffer waits with the following query and both values never changed from zero
    select PERM_ALLOCATED_SIZE,PERM_IN_USE_SIZE,TEMP_ALLOCATED_SIZE,TEMP_IN_USE_SIZE,DEADLOCKS,LOG_FS_READS,LOG_FS_WRITES,LOG_BUFFER_WAITS from sys.monitor;
    Edited by: 853100 on Nov 2, 2012 4:19 AM

    This is not very efficient as the statement will require likely need to be parsed for each INSERT. Even a soft parse is very expensive compared to the cost of the actual INSERT.
    Can you try changing your code to something like the following just to evaluate the difference in performance. The object is to prepare the INSERT just once, outside of the INSERT loop and then execute the prepared INSERT many times passing the required input parameters. I'm not a Pro*C expert but an outline of the code looks something like this:
    char * ins1 = "               INSERT INTO ORDERS(
                        ORD_ORDER_NO             ,
                        ORD_SERIAL_NO            ,
                        ORD_SEM_SMST_SECURITY_ID,
                        ORD_BTM_EMM_MKT_TYPE    ,
                        ORD_BTM_BOOK_TYPE        ,
                        ORD_EXCH_ID              ,
                        ORD_EPM_EM_ENTITY_ID     ,
                        ORD_EXCH_ORDER_NO        ,
                        ORD_CLIENT_ID            ,
                        ORD_BUY_SELL_IND         ,
                        ORD_TRANS_CODE           ,
                        ORD_STATUS               ,
                        ORD_ENTRY_DATE           ,
                        ORD_ORDER_TIME           ,     
                        ORD_QTY_ORIGINAL         ,
                        ORD_QTY_REMAINING        ,
                        ORD_QTY_DISC             ,
                        ORD_QTY_DISC_REMAINING   ,
                        ORD_QTY_FILLED_TODAY     ,
                        ORD_ORDER_PRICE          ,
                        ORD_TRIGGER_PRICE        ,  
                        ORD_DISC_QTY_FLG         ,
                        ORD_GTC_FLG              ,
                        ORD_DAY_FLG              ,
                        ORD_IOC_FLG             ,
                        ORD_MIN_FILL_FLG        ,
                        ORD_MKT_FLG             ,
                        ORD_STOP_LOSS_FLG       ,
                        ORD_AON_FLG             ,
                        ORD_GOOD_TILL_DAYS      ,
                        ORD_GOOD_TILL_DATE     ,     
                        ORD_AUCTION_NO          ,
                        ORD_ACC_CODE            ,
                        ORD_UM_USER_ID          ,
                        ORD_MIN_FILL_QTY        ,
                        ORD_SETTLEMENT_DAYS     ,
                        ORD_COMPETITOR_PERIOD   ,
                        ORD_SOLICITOR_PERIOD    ,
                        ORD_PRO_CLIENT          ,
                        ORD_PARTICIPANT_TYPE    ,
                        ORD_PARTICIPANT_CODE    ,
                        ORD_COUNTER_BROKER_CODE ,
                        ORD_CUSTODIAN_CODE      ,
                        ORD_SETTLER             ,
                        ORD_REMARKS             ,
                        ORD_BSE_DELV_FLAG       ,
                        ORD_BSE_NOTICE_NUM      ,
                        ORD_ERROR_CODE          ,
                        ORD_EXT_CLIENT_ID       ,
                        ORD_SOURCE_FLG          ,
                        ORD_BUY_BACK_FLG        ,
                        ORD_RESERVE_FLG         ,
                        ORD_BSE_REMARK          ,
                        ORD_CARRY_FORWARD_FLAG  ,
                        ORD_ORDER_OFFON         ,
                        ORD_D2C1_FLAG           ,
                        ORD_FI_RETAIL_FLG       ,
                        ORD_OIB_INT_REF_ID      ,
                        ORD_BOB_BASKET_ORD_NO   ,
                        ORD_PRODUCT_ID          ,
                        ORD_OIB_EXEC_REPORT_ID   ,
                        ORD_BANK_DP_TXN_ID       ,
                        ORD_USERINFO_PROG        ,
                        ORD_BANK_CODE            ,
                        ORD_BANK_ACC_NUM         ,
                        ORD_DP_CODE              ,
                        ORD_DP_ACC_NUM           ,
                        ORD_SESSION_ORDER_TYPE   ,
                        ORD_ORDER_CC_SEQ         ,
                        ORD_RMS_DAEMON_STATUS    ,
                        ORD_GROUP_ID             ,
                        ORD_REASON_CODE          ,
                        ORD_REASON_DESCRIPTION   ,
                        ORD_SERIES_IND           ,
                        ORD_BOB_BASKET_TYPE  ,
                        ORD_ORIGINAL_TIME    ,
                        ORD_TRD_EXCH_TRADE_NO,     
                        ORD_MKT_PROT   ,
                        ORD_SETTLEMENT_TYPE      ,
                        ORD_SUB_CLIENT,
                             ORD_ALGO_OI_NUM,
                             ORD_FROM_ALGO_CLORDID,
                             ORD_FROM_ALGO_ORG_CLORDID
                   VALUES(
                        :lvar_ord_order_no       ,
                        :lvar_ord_serial_no     ,
                        ltrim(rtrim(:lvar_ord_sem_smst_security_id)),
                        ltrim(rtrim(:lvar_ord_btm_emm_mkt_type)),
                        ltrim(rtrim(:lvar_ord_btm_book_type)),
                        ltrim(rtrim(:lvar_ord_exch_id))  ,
                        decode(:lD2C1Flag,'N',ltrim(rtrim(:lvar_ord_epm_em_entity_id)),ltrim(rtrim(:sD2C1ControllerId)))  ,
                                   :insertExchOrderNo,
                        ltrim(rtrim(:lvar_ord_client_id))  ,
                        ltrim(rtrim(:lvar_ord_buy_sell_ind)),
                        :lvar_ord_trans_code,
                        :cTransitStatus      ,
                        sysdate,
                        sysdate,
                        :lvar_ord_qty_original,
                        decode(:lvar_ord_qty_remaining  ,-1,to_number(null),:lvar_ord_qty_remaining)    ,
                        decode(:lvar_ord_qty_disc       ,-1,to_number(null),:lvar_ord_qty_disc),
                        decode(:lvar_ord_qty_disc_remaining,-1,to_number(null),:lvar_ord_qty_disc_remaining),
                        :lvar_ord_qty_filled_today    ,
                        :lvar_ord_order_price,
                        decode(:lvar_ord_trigger_price  ,-1,to_number(null),:lvar_ord_trigger_price)     ,
                                   decode(:lvar_ord_disc_qty_flg ,-1,null,:lvar_ord_disc_qty_flg)  ,
                                   decode(:lvar_ord_gtc_flg ,-1,null,:lvar_ord_gtc_flg)  ,
                                   decode(:lvar_ord_day_flg ,-1,null,:lvar_ord_day_flg)  ,
                                   decode(:lvar_ord_ioc_flg ,-1,null,:lvar_ord_ioc_flg)  ,
                                   decode(:lvar_ord_min_fill_flg ,-1,null,:lvar_ord_min_fill_flg)  ,
                                   decode(:lvar_ord_mkt_flg ,-1,null,:lvar_ord_mkt_flg)  ,
                                   decode(:lvar_ord_stop_loss_flg ,-1,null,:lvar_ord_stop_loss_flg)  ,
                                   decode(:lvar_ord_aon_flg ,-1,null,:lvar_ord_aon_flg)  ,
                        decode(:lvar_ord_good_till_days ,-1,to_number(null),:lvar_ord_good_till_days),
                        to_date(ltrim(rtrim(:lvar_ord_good_till_date))  ,'dd-mm-yyyy'),
                        :lvar_ord_auction_no,
                        ltrim(rtrim(:lvar_ord_acc_code)),
                        ltrim(rtrim(:lv_UserIdOrLogPktId)),
                        decode(:lvar_ord_min_fill_qty,-1,to_number(null),:lvar_ord_min_fill_qty),
                        :lvar_ord_settlement_days,
                        :lvar_ord_competitor_period,
                        :lvar_ord_solicitor_period,
                        :lvar_ord_pro_client         ,
                        ltrim(rtrim(:lvar_ord_participant_type)),
                        ltrim(rtrim(:lvar_ord_participant_code)),
                        ltrim(rtrim(:lvar_ord_counter_broker_code)),
                        trim(:lvar_ord_custodian_code)     ,
                        ltrim(rtrim(:lvar_ord_settler)),
                        ltrim(rtrim(:lvar_ord_remarks)),
                        ltrim(rtrim(:lvar_ord_bse_delv_flag))      ,
                        ltrim(rtrim(:lvar_ord_bse_notice_num))     ,
                        :lvar_ord_error_code         ,
                        trim(:lvar_ord_ext_client_id)      ,
                        ltrim(rtrim(:lvar_ord_source_flg)),
                        ltrim(rtrim(:lvar_ord_buyback_flg)),
                        :lvar_ord_reserve_flag        ,
                        trim(:lvar_ord_bse_remark)         ,
                        ltrim(rtrim(:lvar_ord_carryfwd_flg)),
                        :cOnStatus,
                        :lD2C1Flag,
                        :lSendToRemoteUser,
                        :lInternalRefId,
                        :lvar_bob_basket_ord_no,
                        ltrim(rtrim(:lvar_ord_product_id)),
                        trim(:lvar_ord_oib_exec_report_id)   ,
                        :lvar_BankDpTxnId  ,
                        ltrim(rtrim(:lEquBseUserCode )),
                        ltrim(rtrim(:lvar_BankCode))  ,
                        ltrim(rtrim(:lvar_BankAccNo)),
                        ltrim(rtrim(:lvar_DPCode)),
                        ltrim(rtrim(:lvar_DPAccNo))  ,
                        ltrim(rtrim(:lvar_OrderSessionType))   ,
                        :lvar_ord_order_cc_seq,
                        :lvar_ord_rms_daemon_status    ,
                        :lvarGrpId,
                        :lvar_ord_reason_code          ,
                        trim(:lvar_ord_reason_description)   ,
                        :lSecSeriesInd,
                        ltrim(rtrim(:lBasketType)),
                        sysdate,
                        (-1 * :lvar_ord_serial_no),
                        :MktProt ,          
                        :lvar_ord_sett_type,
                        ltrim(rtrim(:lvar_ca_cli_type)) ,
                                   :ComplianceID,
                                   ltrim(rtrim(:lvar_ClOrd)),
                                   ltrim(rtrim(:lvar_OrgClOrd))
    EXEC SQL AT :db_conn PREPARE i1 FROM :ins1;
         logTimestamp("BEFORE inserting in  orders table");
    for (i=0; i<NUM_INSERTS; i++)
              if ( strncmp(lvar_ord_exch_id.arr,"NSE",3) ==0 )
                   if(tmpExchOrderNo == -1)
                        insertExchOrderNo = NULL;
                   else
                        insertExchOrderNo = tmpExchOrderNo;
              else if ( strncmp(lvar_ord_exch_id.arr,"BSE",3) ==0 )
                   if(tmpExchOrderNo == -1)
                        insertExchOrderNo = NULL;
                   else
                        insertExchOrderNo = tmpExchOrderNo;
                lvar_ord_acc_code.len = strlen (lvar_ord_acc_code.arr);
              sprintf (lv_UserIdOrLogPktId.arr,"%d",UserIdOrLogPktId );
              lv_UserIdOrLogPktId.len = strlen (lv_UserIdOrLogPktId.arr) ;
              lEquBseUserCode.len = fTrim(lEquBseUserCode.arr,16);
              lvar_ord_buyback_flg.len = fTrim(lvar_ord_buyback_flg.arr,1);
              lvar_ord_exch_id.len = fTrim(lvar_ord_exch_id.arr,3);
                   EXEC SQL AT :db_conn EXECUTE i1 USING
                        :lvar_ord_order_no       ,
                        :lvar_ord_serial_no     ,
                        :lvar_ord_sem_smst_security_id,
                        :lvar_ord_btm_emm_mkt_type,
    etc. ;
              logTimestamp("AFTER inserting in  orders table");
    /* Divide reported time by NUM_INSERTS to get average time for one insert */
    Chris

  • Select Query Takes more time

    Hi All,
    I have cloned KSB1 tcode to custom one as required by business.
    Below query takes more time than excepted.
    Here V_DB_TABLE = COVP.
    Values in Where clause are as follows
    OBNJR in ( KSBB010000001224  BT  KSBB012157221571)
    GJAHR in blank
    VERSN in '000'
    WRTTP in '04' and '11'
    all others are blank
    VT_VAR_COND = ( CPUDT BETWEEN '20091201' and '20091208' )
    SELECT (VT_FIELDS) INTO CORRESPONDING FIELDS OF GS_COVP_EXT      
                        FROM (V_DB_TABLE)                             
                        WHERE LEDNR = '00'                            
                        AND   OBJNR IN LR_OBJNR                       
                        AND   GJAHR IN GR_GJAHR                       
                        AND   VERSN IN GR_VERSN                       
                        AND   WRTTP IN GR_WRTTP                       
                        AND   KSTAR IN LR_KSTAR                       
                        AND   PERIO IN GR_PERIO                       
                        AND   BUDAT IN GR_BUDAT                       
                        AND   PAROB IN GR_PAROB                       
                        AND   (VT_VAR_COND).    
    Checked in table for this condition it has only 92 entries.
    But when i execute program takes long time as 3 Hrs.
    Could any one help me on this

    >1.Dont use SELECT/ENDSELECT instead use INTO TABLE addition .
    > 2.Avoid using corresponding addition.create a type and reference it.
    > If the select is going for dump beacause of storage limitations ,then use Cursors.
    you got three large NOs .... all three recommendations are wrong!
    The SE16 test is going in the right direction ... but what was filled. Nobody knows!!!!
    Select options:
    Did you ever try to trace the SE16?  The generic statement has for every field an in-condition!
    Without the information what was actually filled, nobody can say something there
    are at least 2**n  combinations possible!
    Use ST05 for SE16 and check actual statement plus explain!

Maybe you are looking for

  • Remote control and MSI PC-DTV Mega Sky 580

    Hello, I bought one of these recently and initially had problems when installed. It would initially run fine but after I closed the program down and restarted it the PC would just reboot. I was using the front USB ports so I moved it to the rear port

  • Merging two company codes at sales organization levels

    Hello Guru's, I am working on a complex project,  the client wants to merge two company codes at sales organization level.  Will anyone guide me the procedure to do it. Regards, PV

  • Different skype names appearing when you sign in

    When I sign into skype, a list of used names appears in the 'skype name' drop-down menu. Is it possible to clear this list? I don't want all the names to be visible when signing in. Grateful if anyone can advise, thanks. 

  • Transferring Adobe Photoshop Elements from old mac (externalHD) to new iMac

    Is it possible to do this transfer?  I am not very techie and I tried one thing I thought might work...but of course it was too easy.  I dragged the APE folder from applications in old HD to my desktop.  Then I dragged it into Applications folder in

  • Workflow issue : N step Item level approval for SC

    Hello Friends, We are working on SRM 4.0 , classic scenario , SP11. Here we are facing a typical issue in workflow. We are using Nstep approval for SC. In the standard task TS14508044, the work item text is "Approval of SC ".The shopping cart value i