Fetch the records from cache

say i have emp table
eno ename sales
1 david 1100
2 lara 200
3 james 1000
1 david 1200
2 lara 5400
4 white 890
3 james 7500
1 david 1313
eno can be duplicate
when i give empno is 1
i want to display his sales i.e 1100,1200,1313
first time i will go to database and fetch the records
but next time onwards i dont go to database; i will fetch the records from cache;
i thought doing it using hashmap or hasptable ;both those two don't allow duplicate values(empno has duplicate values);
How to solve this problem.

Hi,
Ever considered splitting that table up. You are thinking about caching thats a
very good idea. But doesnt it make it vary evident that the table staructure that you have
keeps a lot of redundant data. Specially it hardly makes a sense to have sales
figures in a emp table. Instead you can have Emp table containing eno and
ename with eno as the primary key and have another table called sales with eno
and sales columns and in this case the eno references the Emp table.
If you still want to continue with this structure then I think you can go ahead with
the solution already suggested to you
Aviroop

Similar Messages

  • How to do Query optimization?It takes more time to fetch the record from db. Very urgent, I need your assistance

    Hi all
                                     I want to fetch just twenty thousands records from table. My query take more time to fetch  twenty thousands records.  I post my working query, Could you correct the query for me. thanks in advance.
    Query                    
    select
    b.Concatenated_account Account,
    b.Account_description description,
    SUM(case when(Bl.ACTUAL_FLAG='B') then
    ((NVL(Bl.PERIOD_NET_DR, 0)- NVL(Bl.PERIOD_NET_CR, 0)) + (NVL(Bl.PROJECT_TO_DATE_DR, 0)- NVL(Bl.PROJECT_TO_DATE_CR, 0)))end) "Budget_2011"
    from
    gl_balances Bl,
    gl_code_combinations GCC,
    psb_ws_line_balances_i b ,
    gl_budget_versions bv,
    gl_budgets_v gv
    where
    b.CODE_COMBINATION_ID=gcc.CODE_COMBINATION_ID and bl.CODE_COMBINATION_ID=gcc.CODE_COMBINATION_ID and
    bl.budget_version_id =bv.BUDGET_VERSION_ID and gv.budget_version_id= bv.budget_version_id
    and gv.latest_opened_year in (select latest_opened_year-3 from gl_budgets_v where latest_opened_year=:BUDGET_YEAR )
    group by b.Concatenated_account ,b.Account_description

    Hi,
    If this question is related to SQL then please post in SQL forum.
    Otherwise provide more information how this sql is being used and do you want to tune the SQL or the way it fetches the information from DB and display in OAF.
    Regards,
    Sandeep M.

  • How to quickly fetch the records from an SQL recordset

    I'm using LW/CVI V7.1.1 and SQL Toolkit V2.06.
    When displaying the recordset from a SELECT statement I use the following construct:
      SQLhandle1 = DBActivateSQL(DBhandle, SELECTtext);
      DBBindCol() statements.......
      numRecs = DBNumberOfRecords(SQLhandle1);
      for (n=1; n<=numRecs; n++) {
        DBFetchNext(SQLhandle1);
        display record to the user...
      DBDeactivateSQL (SQLhandle1);
    This has always worked fine for me when using local databases. Now I am developing an app for a remote database, and the fetching of each selected record is proving to be an issue. It takes at best, 60msecs for my round-trip network access to fetch each record. If selecting very many records, the fetching can add up to a considerable time delay.
    My question is, how can I bind the entire recordset to my application variables, (or to a local table?) in a single request to the database? Does LW/CVI support such a method? Or perhaps someone knows an SQL method to help me?
    Thanks

    Hi Michael,
    Thanks for the help. This is what I was looking for. Not sure why I missed it!
    However, after trying it out, it doesn't seem to help. The statement:  DBGetVariantArray(SQLhandle, &array, &recs, &fields); seems to take the same amount of time to get the records as the individual DBFetchNext() statements. So if my SQL statement matches 100 records, the DBGetVariantArray() call will take 100*60msec to complete.
    Is there a DB attribute setting that needs changed?

  • Urgent: Problem in Fetching the records from ITAB3

    hi,
    here's d code,and the bold is dere where i am facing the problem i.e. whne i append lines of ITAB2 to ITAB3 it takes 32,234 records but in reality in ITAB2 there are 39 records,ITFINAL contains 45 records which is displaying the coreect data.
    But why ITAB3 conatins 32,234 records in it.
    it might hit th eperformance of the report.
    TABLES: RSEG.
    ***********DECLARATION OF TABLES*************
    ************TABLE BKPF - ACCOUNTING HEADER ***********
    DATA: BEGIN OF ITBKPF OCCURS 0,
    BUKRS LIKE BKPF-BUKRS,
    BELNR LIKE BKPF-BELNR,
    GJAHR LIKE BKPF-GJAHR,
    AWKEY LIKE BKPF-AWKEY,
    BUDAT LIKE BKPF-BUDAT,
    XBLNR LIKE BKPF-XBLNR,
    AWTYP LIKE BKPF-AWTYP,
    END OF ITBKPF.
    *********TABLE BSIK - ACCOUNTING OPEN ITEMS********
    DATA: BEGIN OF ITAB2 OCCURS 0,
    LFBNR LIKE RSEG-LFBNR,
    BUKRS LIKE BSIK-BUKRS,
    GJAHR LIKE BSIK-GJAHR,
    BELNR LIKE BSIK-BELNR,
    AWKEY LIKE BKPF-AWKEY,
    WRBTR LIKE BSIK-WRBTR,
    LIFNR LIKE BSIK-LIFNR,
    AUGBL LIKE BSAK-AUGBL,
    AUGDT LIKE BSAK-AUGDT,
    END OF ITAB2.
    **********TABLE BSAK - ACCOUNTING CLEAR ITEMS*******
    DATA: BEGIN OF ITAB3 OCCURS 0,
    LFBNR LIKE RSEG-LFBNR,
    BUKRS LIKE BSAK-BUKRS,
    GJAHR LIKE BSAK-GJAHR,
    BELNR LIKE BSAK-BELNR,
    AWKEY LIKE BKPF-AWKEY,
    WRBTR LIKE BSIK-WRBTR,
    LIFNR LIKE BSIK-LIFNR,
    AUGBL LIKE BSAK-AUGBL,
    AUGDT LIKE BSAK-AUGDT,
    END OF ITAB3.
    DATA: BEGIN OF ITDEMO OCCURS 0,
    BELNR LIKE RSEG-BELNR,
    GJAHR LIKE RSEG-GJAHR,
    LFBNR LIKE RSEG-LFBNR,
    XBLNR LIKE RSEG-XBLNR,
    END OF ITDEMO.
    *****FINAL TABLE TO GATHER N DISPLAY OUTPUT*****
    DATA: BEGIN OF ITFINAL OCCURS 0,
    LFBNR LIKE RSEG-LFBNR,
    BUKRS LIKE BKPF-BUKRS,
    GJAHR LIKE BKPF-GJAHR,
    BELNR LIKE BKPF-BELNR,
    AWKEY LIKE BKPF-AWKEY,
    WRBTR LIKE BSIK-WRBTR,
    LIFNR LIKE BSIK-LIFNR,
    AUGBL LIKE BSAK-AUGBL,
    AUGDT LIKE BSAK-AUGDT,
    END OF ITFINAL.
    **********END OF DECLARATIONS*************
    SELECT-OPTIONS: P_LFBNR FOR RSEG-LFBNR.
    *************FETCHING OF THE DATA*************
    START-OF-SELECTION.
    BKPF
    SELECT BUKRS BELNR GJAHR AWKEY BUDAT XBLNR AWTYP
    FROM BKPF
    INTO (ITBKPF-BUKRS,ITBKPF-BELNR,ITBKPF-GJAHR,
    ITBKPF-AWKEY,ITBKPF-BUDAT,ITBKPF-XBLNR,ITBKPF-AWTYP)
    WHERE AWTYP EQ 'MKPF' OR AWTYP EQ 'RMRP'.
              o
                    + MKPF*
    ************BEGIN OF TRY CODE FOR A MATERIAL DOCUMENT************
    ITDEMO-BELNR = ITBKPF-AWKEY(10).
    ITDEMO-GJAHR = ITBKPF-AWKEY+10(4).
    ITDEMO-XBLNR = ITBKPF-XBLNR.
    SELECT LFBNR FROM RSEG INTO
    (ITDEMO-LFBNR) WHERE
    BELNR EQ ITBKPF-AWKEY(10) AND
    GJAHR EQ ITBKPF-AWKEY+10(4) AND
    XBLNR EQ ITBKPF-XBLNR AND LFBNR > 0.
    CHECK SY-SUBRC EQ 0 AND ITDEMO-LFBNR IN P_LFBNR.
    ************END OF TRY CODE FOR A MATERIAL DOCUMENT***************
    ITAB2-BUKRS = ITBKPF-BUKRS.
    ITAB2-GJAHR = ITBKPF-GJAHR.
    ITAB2-BELNR = ITBKPF-BELNR.
    ITAB3-BUKRS = ITBKPF-BUKRS.
    ITAB3-GJAHR = ITBKPF-GJAHR.
    ITAB3-BELNR = ITBKPF-BELNR.
              o
                    + BSIK*
    SELECT WRBTR LIFNR FROM BSIK
    INTO (ITAB2-WRBTR, ITAB2-LIFNR)
    WHERE BUKRS EQ ITBKPF-BUKRS
    AND GJAHR EQ ITBKPF-GJAHR
    AND BELNR EQ ITBKPF-BELNR.
    APPEND ITAB2.
    EXIT.
    ENDSELECT.
              o
                    +
    BSAK*
    SELECT WRBTR LIFNR AUGBL AUGDT
    FROM BSAK
    INTO (ITAB3-WRBTR,ITAB3-LIFNR,ITAB3-AUGBL,ITAB3-AUGDT)
    WHERE BUKRS EQ ITBKPF-BUKRS
    AND GJAHR EQ ITBKPF-GJAHR
    AND BELNR EQ ITBKPF-BELNR.
    APPEND ITAB3.
    EXIT.
    ENDSELECT.
    APPEND ITDEMO.
    EXIT.
    ENDSELECT.
    APPEND ITBKPF.
    ENDSELECT.
    Fields Found?
    READ TABLE ITBKPF TRANSPORTING NO FIELDS INDEX 1.
    IF sy-subrc NE 0.
    MESSAGE i000(zmm1) WITH 'No documents found!'.
    ENDIF.
    Prepare Output
    LOOP AT ITBKPF.
    CLEAR ITAB2.
    READ TABLE ITAB2
    WITH KEY BUKRS = ITBKPF-BUKRS
    BELNR = ITBKPF-BELNR
    GJAHR = ITBKPF-GJAHR.
    CHECK sy-subrc EQ 0?
    CLEAR ITAB3.
    READ TABLE ITAB3
    WITH KEY BUKRS = ITBKPF-BUKRS
    BELNR = ITBKPF-BELNR
    GJAHR = ITBKPF-GJAHR. .
    CHECK sy-subrc EQ 0?
    READ TABLE ITDEMO
    WITH KEY BELNR = ITBKPF-AWKEY(10).
    CHECK sy-subrc EQ 0?
    APPEND LINES OF ITAB2 TO ITAB3.
    CHECK sy-subrc EQ 0?
    ITFINAL-LFBNR = ITDEMO-LFBNR.
    ITFINAL-BUKRS = ITBKPF-BUKRS.
    ITFINAL-BELNR = ITBKPF-BELNR.
    ITFINAL-GJAHR = ITBKPF-GJAHR.
    ITFINAL-AWKEY = ITBKPF-AWKEY.
    ITFINAL-WRBTR = ITAB3-WRBTR.
    ITFINAL-LIFNR = ITAB3-LIFNR.
    ITFINAL-AUGBL = ITAB3-AUGBL.
    ITFINAL-AUGDT = ITAB3-AUGDT.
    DELETE ITFINAL WHERE WRBTR = 0.
    APPEND ITFINAL.
    CLEAR ITFINAL.
    ENDLOOP.
    SORT ITFINAL BY AUGBL AUGDT .
    END-OF-SELECTION
    END-OF-SELECTION.
    Output
    LOOP AT ITFINAL.
    WRITE: / ITFINAL-LFBNR,ITFINAL-BELNR, ITFINAL-GJAHR,ITFINAL-AWKEY, ITFINAL-WRBTR, ITFINAL-LIFNR,ITFINAL-AUGBL,ITFINAL-AUGDT.
    ENDLOOP.

    hi,
    actually i have to display the open n clear items with respect to the MATERIAL DOCUMENT.
    try to execute the code which i am displaying below:-
    TABLES: RSEG.
    **********DECLARATION OF TABLES************
    ***********TABLE BKPF  - ACCOUNTING HEADER **********
    DATA: BEGIN OF ITBKPF OCCURS 0,
          BUKRS LIKE BKPF-BUKRS,
          BELNR LIKE BKPF-BELNR,
          GJAHR LIKE BKPF-GJAHR,
          AWKEY LIKE BKPF-AWKEY,
          BUDAT LIKE BKPF-BUDAT,
          XBLNR LIKE BKPF-XBLNR,
          AWTYP LIKE BKPF-AWTYP,
          END OF ITBKPF.
    ********TABLE BSIK - ACCOUNTING OPEN ITEMS*******
    DATA: BEGIN OF ITAB2 OCCURS 0,
          LFBNR LIKE RSEG-LFBNR,
          BUKRS LIKE BSIK-BUKRS,
          GJAHR LIKE BSIK-GJAHR,
          BELNR LIKE BSIK-BELNR,
          AWKEY LIKE BKPF-AWKEY,
          WRBTR LIKE BSIK-WRBTR,
          LIFNR LIKE BSIK-LIFNR,
          AUGBL LIKE BSAK-AUGBL,
          AUGDT LIKE BSAK-AUGDT,
          END OF ITAB2.
    *********TABLE  BSAK - ACCOUNTING CLEAR ITEMS******
    DATA: BEGIN OF ITAB3 OCCURS 0,
          LFBNR LIKE RSEG-LFBNR,
          BUKRS LIKE BSAK-BUKRS,
          GJAHR LIKE BSAK-GJAHR,
          BELNR LIKE BSAK-BELNR,
          AWKEY LIKE BKPF-AWKEY,
          WRBTR LIKE BSIK-WRBTR,
          LIFNR LIKE BSIK-LIFNR,
          AUGBL LIKE BSAK-AUGBL,
          AUGDT LIKE BSAK-AUGDT,
          END OF ITAB3.
    *********TABLE BSIS - MIRO NOT PERFORMED*******
    DATA: BEGIN OF ITAB4 OCCURS 0,
          LFBNR LIKE RSEG-LFBNR,
          BUKRS LIKE BSIS-BUKRS,
          GJAHR LIKE BSIS-GJAHR,
          BELNR LIKE BSIS-BELNR,
          AWKEY LIKE BKPF-AWKEY,
          WRBTR LIKE BSIK-WRBTR,
          LIFNR LIKE BSIK-LIFNR,
          AUGBL LIKE BSAK-AUGBL,
          AUGDT LIKE BSAK-AUGDT,
          END OF ITAB4.
    **********TABLE RSEG - FOR MATERIAL DOCUMENT********
    DATA: BEGIN OF ITDEMO OCCURS 0,
          BELNR LIKE RSEG-BELNR,
          GJAHR LIKE RSEG-GJAHR,
          LFBNR LIKE RSEG-LFBNR,
          XBLNR LIKE RSEG-XBLNR,
          END OF ITDEMO.
    ****FINAL TABLE TO GATHER N DISPLAY OUTPUT****
    DATA: BEGIN OF ITFINAL OCCURS 0,
          LFBNR LIKE RSEG-LFBNR,
          BUKRS LIKE BKPF-BUKRS,
          GJAHR LIKE BKPF-GJAHR,
          BELNR LIKE BKPF-BELNR,
          AWKEY LIKE BKPF-AWKEY,
          WRBTR LIKE BSIK-WRBTR,
          LIFNR LIKE BSIK-LIFNR,
          AUGBL LIKE BSAK-AUGBL,
          AUGDT LIKE BSAK-AUGDT,
          END OF ITFINAL.
    *********END OF DECLARATIONS************
    SELECT-OPTIONS: P_LFBNR FOR RSEG-LFBNR.
    ************FETCHING OF THE DATA************
    START-OF-SELECTION.
    BKPF
        SELECT BUKRS BELNR GJAHR AWKEY BUDAT XBLNR AWTYP
        FROM BKPF
        INTO (ITBKPF-BUKRS,ITBKPF-BELNR,ITBKPF-GJAHR,
             ITBKPF-AWKEY,ITBKPF-BUDAT,ITBKPF-XBLNR,ITBKPF-AWTYP)
        WHERE AWTYP EQ 'MKPF' OR AWTYP EQ 'RMRP'.
    MKPF
    ***********BEGIN OF TRY CODE FOR A MATERIAL DOCUMENT***********
        ITDEMO-BELNR = ITBKPF-AWKEY(10).
        ITDEMO-GJAHR = ITBKPF-AWKEY+10(4).
        ITDEMO-XBLNR = ITBKPF-XBLNR.
        SELECT LFBNR FROM RSEG INTO
        (ITDEMO-LFBNR) WHERE
        BELNR EQ ITBKPF-AWKEY(10) AND
        GJAHR EQ ITBKPF-AWKEY+10(4) AND
        XBLNR EQ ITBKPF-XBLNR AND LFBNR  > 0.
    CHECK SY-SUBRC EQ 0 AND ITDEMO-LFBNR IN P_LFBNR.
    ***********END OF TRY CODE FOR A MATERIAL DOCUMENT**************
        ITAB2-BUKRS = ITBKPF-BUKRS.
        ITAB2-GJAHR = ITBKPF-GJAHR.
        ITAB2-BELNR = ITBKPF-BELNR.
        ITAB3-BUKRS = ITBKPF-BUKRS.
        ITAB3-GJAHR = ITBKPF-GJAHR.
        ITAB3-BELNR = ITBKPF-BELNR.
    BSIK
        SELECT WRBTR LIFNR FROM BSIK
        INTO (ITAB2-WRBTR, ITAB2-LIFNR)
        WHERE BUKRS EQ ITBKPF-BUKRS
          AND GJAHR EQ ITBKPF-GJAHR
          AND BELNR EQ ITBKPF-BELNR.
        APPEND ITAB2.
        EXIT.
        ENDSELECT.
    BSAK
        SELECT WRBTR LIFNR AUGBL AUGDT
        FROM BSAK
        INTO (ITAB3-WRBTR,ITAB3-LIFNR,ITAB3-AUGBL,ITAB3-AUGDT)
        WHERE BUKRS EQ ITBKPF-BUKRS
          AND GJAHR EQ ITBKPF-GJAHR
          AND BELNR EQ ITBKPF-BELNR.
        APPEND ITAB3.
        EXIT.
        ENDSELECT.
    BSIS
       SELECT WRBTR XREF3 FROM BSIS
       INTO (ITAB1-WRBTR, ITAB1-XREF3)
       WHERE BUKRS EQ ITBKPF-BUKRS
         AND GJAHR EQ ITBKPF-GJAHR
         AND BELNR EQ ITBKPF-BELNR.
       APPEND ITAB1.
       EXIT.
       ENDSELECT.
      CHECK sy-subrc EQ 0?
        APPEND ITDEMO.
        EXIT.
        ENDSELECT.
        APPEND ITBKPF.
        ENDSELECT.
    Fields Found?
      READ TABLE ITBKPF TRANSPORTING NO FIELDS INDEX 1.
      IF sy-subrc NE 0.
        MESSAGE i000(zmm1) WITH 'No documents found!'.
      ENDIF.
    Prepare Output
      LOOP AT ITBKPF.
        CLEAR ITAB2.
        READ TABLE ITAB2
        WITH KEY   BUKRS = ITBKPF-BUKRS
                   BELNR = ITBKPF-BELNR
                   GJAHR = ITBKPF-GJAHR." BINARY SEARCH..
      CHECK sy-subrc EQ 0?
        CLEAR ITAB3.
        READ TABLE ITAB3
        WITH KEY   BUKRS = ITBKPF-BUKRS
                   BELNR = ITBKPF-BELNR
                   GJAHR = ITBKPF-GJAHR." BINARY SEARCH.              .
      CHECK sy-subrc EQ 0?
        READ TABLE ITDEMO
        WITH KEY BELNR = ITBKPF-AWKEY(10).
      CHECK sy-subrc EQ 0?
        APPEND LINES OF ITAB2 TO ITAB3.
      CHECK sy-subrc EQ 0?
        ITFINAL-LFBNR = ITDEMO-LFBNR.
        ITFINAL-BUKRS = ITBKPF-BUKRS.
        ITFINAL-BELNR = ITBKPF-BELNR.
        ITFINAL-GJAHR = ITBKPF-GJAHR.
        ITFINAL-AWKEY = ITBKPF-AWKEY.
        ITFINAL-WRBTR = ITAB3-WRBTR.
        ITFINAL-LIFNR = ITAB3-LIFNR.
        ITFINAL-AUGBL = ITAB3-AUGBL.
        ITFINAL-AUGDT = ITAB3-AUGDT.
        DELETE ITFINAL WHERE WRBTR = 0.
        APPEND ITFINAL.
        CLEAR  ITFINAL.
        ENDLOOP.
        SORT ITFINAL BY  AUGBL AUGDT .
    END-OF-SELECTION
    END-OF-SELECTION.
    Output
    WRITE: /'                     OPEN ITEMS ->  PAYMENTS ARE NOT DONE'.
      ULINE.
      WRITE: / 'MAT.DOC.   A/C DOC.   YEAR    REF.KEY                  AMOUNT    VENDOR     CLR.DOC.    CLR.DATE' .
      ULINE.
      LOOP AT ITFINAL.
        WRITE: / ITFINAL-LFBNR,ITFINAL-BELNR, ITFINAL-GJAHR,ITFINAL-AWKEY, ITFINAL-WRBTR, ITFINAL-LIFNR,ITFINAL-AUGBL,ITFINAL-AUGDT.
      ENDLOOP.

  • Best way to Fetch the record

    Hi,
    Please suggest me the best way to fetch the record from the table designed below. It is Oracle 10gR2 on Linux
    Whenever a client visit the office a record will be created for him. The company policy is to maintain 10 years of data on the transaction table but the table holds record count of 3 Million records per year.
    The table has the following key Columns for the Select (sample Table)
    Client_Visit
    ID Number(12,0) --sequence generated number
    EFF_DTE DATE --effective date of the customer (sometimes the client becomes invalid and he will be valid again)
    Create_TS Timestamp(6)
    Client_ID Number(9,0)
    Cascade Flg vahrchar2(1)
    On most of the reports the records are fetched by Max(eff_dte) and Max(create_ts) and cascade flag ='Y'.
    I have following queries but the both of them are not cost effective and takes 8 minutes to display the records.
    Code 1:
    SELECT   au_subtyp1.au_id_k,
                                       au_subtyp1.pgm_struct_id_k
                                  FROM au_subtyp au_subtyp1
                                 WHERE au_subtyp1.create_ts =
                                          (SELECT MAX (au_subtyp2.create_ts)
                                             FROM au_subtyp au_subtyp2
                                            WHERE au_subtyp2.au_id_k =
                                                                au_subtyp1.au_id_k
                                              AND au_subtyp2.create_ts <
                                                     TO_DATE ('2013-01-01',
                                                              'YYYY-MM-DD'
                                              AND au_subtyp2.eff_dte =
                                                     (SELECT MAX
                                                                (au_subtyp3.eff_dte
                                                        FROM au_subtyp au_subtyp3
                                                       WHERE au_subtyp3.au_id_k =
                                                                au_subtyp2.au_id_k
                                                         AND au_subtyp3.create_ts <
                                                                TO_DATE
                                                                    ('2013-01-01',
                                                                     'YYYY-MM-DD'
                                                         AND au_subtyp3.eff_dte < =
                                                                TO_DATE
                                                                    ('2012-12-31',
                                                                     'YYYY-MM-DD'
                                   AND au_subtyp1.exists_flg = 'Y'
    Explain Plan
    Plan hash value: 2534321861
    | Id  | Operation                | Name      | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT         |           |     1 |    91 |       | 33265   (2)| 00:06:40 |
    |*  1 |  FILTER                  |           |       |       |       |            |          |
    |   2 |   HASH GROUP BY          |           |     1 |    91 |       | 33265   (2)| 00:06:40 |
    |*  3 |    HASH JOIN             |           |  1404K|   121M|    19M| 33178   (1)| 00:06:39 |
    |*  4 |     HASH JOIN            |           |   307K|    16M|  8712K| 23708   (1)| 00:04:45 |
    |   5 |      VIEW                | VW_SQ_1   |   307K|  5104K|       | 13493   (1)| 00:02:42 |
    |   6 |       HASH GROUP BY      |           |   307K|    13M|   191M| 13493   (1)| 00:02:42 |
    |*  7 |        INDEX FULL SCAN   | AUSU_PK   |  2809K|   125M|       | 13493   (1)| 00:02:42 |
    |*  8 |      INDEX FAST FULL SCAN| AUSU_PK   |  2809K|   104M|       |  2977   (2)| 00:00:36 |
    |*  9 |     TABLE ACCESS FULL    | AU_SUBTYP |  1404K|    46M|       |  5336   (2)| 00:01:05 |
    Predicate Information (identified by operation id):
       1 - filter("AU_SUBTYP1"."CREATE_TS"=MAX("AU_SUBTYP2"."CREATE_TS"))
       3 - access("AU_SUBTYP2"."AU_ID_K"="AU_SUBTYP1"."AU_ID_K")
       4 - access("AU_SUBTYP2"."EFF_DTE"="VW_COL_1" AND "AU_ID_K"="AU_SUBTYP2"."AU_ID_K")
       7 - access("AU_SUBTYP3"."EFF_DTE"<=TO_DATE(' 2012-12-31 00:00:00', 'syyyy-mm-dd
                  hh24:mi:ss') AND "AU_SUBTYP3"."CREATE_TS"<TIMESTAMP' 2013-01-01 00:00:00')
           filter("AU_SUBTYP3"."CREATE_TS"<TIMESTAMP' 2013-01-01 00:00:00' AND
                  "AU_SUBTYP3"."EFF_DTE"<=TO_DATE(' 2012-12-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
       8 - filter("AU_SUBTYP2"."CREATE_TS"<TIMESTAMP' 2013-01-01 00:00:00')
       9 - filter("AU_SUBTYP1"."EXISTS_FLG"='Y')Code 2:
    I already raised a thread a week back and Dom suggested the following query, it is cost effective but the performance is same and used the same amount of Temp tablespace
    select au_id_k,pgm_struct_id_k from (
    SELECT au_id_k
          ,      pgm_struct_id_k
          ,      ROW_NUMBER() OVER (PARTITION BY au_id_k ORDER BY eff_dte DESC, create_ts DESC) rn,
          create_ts, eff_dte,exists_flg
          FROM   au_subtyp
          WHERE  create_ts < TO_DATE('2013-01-01','YYYY-MM-DD')
          AND    eff_dte  <= TO_DATE('2012-12-31','YYYY-MM-DD') 
          ) d  where rn =1   and exists_flg = 'Y'
    --Explain Plan
    Plan hash value: 4039566059
    | Id  | Operation                | Name      | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT         |           |  2809K|   168M|       | 40034   (1)| 00:08:01 |
    |*  1 |  VIEW                    |           |  2809K|   168M|       | 40034   (1)| 00:08:01 |
    |*  2 |   WINDOW SORT PUSHED RANK|           |  2809K|   133M|   365M| 40034   (1)| 00:08:01 |
    |*  3 |    TABLE ACCESS FULL     | AU_SUBTYP |  2809K|   133M|       |  5345   (2)| 00:01:05 |
    Predicate Information (identified by operation id):
       1 - filter("RN"=1 AND "EXISTS_FLG"='Y')
       2 - filter(ROW_NUMBER() OVER ( PARTITION BY "AU_ID_K" ORDER BY
                  INTERNAL_FUNCTION("EFF_DTE") DESC ,INTERNAL_FUNCTION("CREATE_TS") DESC )<=1)
       3 - filter("CREATE_TS"<TIMESTAMP' 2013-01-01 00:00:00' AND "EFF_DTE"<=TO_DATE('
                  2012-12-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))Thanks,
    Vijay

    Hi Justin,
    Thanks for your reply. I am running this on our Test environment as I don't want to run this on Production environment now. The test environment holds 2809605 records (2 Million).
    The query output count is 281699 (2 Hundred Thousand) records and the selectivity is 0.099. The Distinct values of create_ts, eff_dte, and exists_flg is 2808905 records. I am sure the index scan is not going to help out much as you said.
    The core problem is both queries are using lot of Temp tablespace. When we use this query to join the tables, the other table has the same design as below so the temp tablespace grows bigger.
    Both the production and test environment are 3 Node RAC.
    First Query...
    CPU used by this session     4740
    CPU used when call started     4740
    Cached Commit SCN referenced     21393
    DB time     4745
    OS Involuntary context switches     467
    OS Page reclaims     64253
    OS System time used     26
    OS User time used     4562
    OS Voluntary context switches     16
    SQL*Net roundtrips to/from client     9
    bytes received via SQL*Net from client     2487
    bytes sent via SQL*Net to client     15830
    calls to get snapshot scn: kcmgss     37
    consistent gets     52162
    consistent gets - examination     2
    consistent gets from cache     52162
    enqueue releases     19
    enqueue requests     19
    enqueue waits     1
    execute count     2
    ges messages sent     1
    global enqueue gets sync     19
    global enqueue releases     19
    index fast full scans (full)     1
    index scans kdiixs1     1
    no work - consistent read gets     52125
    opened cursors cumulative     2
    parse count (hard)     1
    parse count (total)     2
    parse time cpu     1
    parse time elapsed     1
    physical write IO requests     69
    physical write bytes     17522688
    physical write total IO requests     69
    physical write total bytes     17522688
    physical write total multi block requests     69
    physical writes     2139
    physical writes direct     2139
    physical writes direct temporary tablespace     2139
    physical writes non checkpoint     2139
    recursive calls     19
    recursive cpu usage     1
    session cursor cache hits     1
    session logical reads     52162
    sorts (memory)     2
    sorts (rows)     760
    table scan blocks gotten     23856
    table scan rows gotten     2809607
    table scans (short tables)     1
    user I/O wait time     1
    user calls     11
    workarea executions - onepass     1
    workarea executions - optimal     9
    Second Query
    CPU used by this session     1197
    CPU used when call started     1197
    Cached Commit SCN referenced     21393
    DB time     1201
    OS Involuntary context switches     8684
    OS Page reclaims     21769
    OS System time used     14
    OS User time used     1183
    OS Voluntary context switches     50
    SQL*Net roundtrips to/from client     9
    bytes received via SQL*Net from client     767
    bytes sent via SQL*Net to client     15745
    calls to get snapshot scn: kcmgss     17
    consistent gets     23871
    consistent gets from cache     23871
    db block gets     16
    db block gets from cache     16
    enqueue releases     25
    enqueue requests     25
    enqueue waits     1
    execute count     2
    free buffer requested     1
    ges messages sent     1
    global enqueue get time     1
    global enqueue gets sync     25
    global enqueue releases     25
    no work - consistent read gets     23856
    opened cursors cumulative     2
    parse count (hard)     1
    parse count (total)     2
    parse time elapsed     1
    physical read IO requests     27
    physical read bytes     6635520
    physical read total IO requests     27
    physical read total bytes     6635520
    physical read total multi block requests     27
    physical reads     810
    physical reads direct     810
    physical reads direct temporary tablespace     810
    physical write IO requests     117
    physical write bytes     24584192
    physical write total IO requests     117
    physical write total bytes     24584192
    physical write total multi block requests     117
    physical writes     3001
    physical writes direct     3001
    physical writes direct temporary tablespace     3001
    physical writes non checkpoint     3001
    recursive calls     25
    session cursor cache hits     1
    session logical reads     23887
    sorts (disk)     1
    sorts (memory)     2
    sorts (rows)     2810365
    table scan blocks gotten     23856
    table scan rows gotten     2809607
    table scans (short tables)     1
    user I/O wait time     2
    user calls     11
    workarea executions - onepass     1
    workarea executions - optimal     5Thanks,
    Vijay
    Edited by: Vijayaraghavan Krishnan on Nov 28, 2012 11:17 AM
    Edited by: Vijayaraghavan Krishnan on Nov 28, 2012 11:19 AM

  • Can we split and fetch the records in Database Adapter

    Hi,
    I designed a Database Adapter to fetch the records from oracle Database. Some time, the Database Adapter need to fetch around 5000, or 10,000 records in single shot. In that case my BPEL process is choking and getting error as
    java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
    Could someone help me to resolve this?
    In Database Adapter can we split and fetch the records, if number of records more then 1000.
    ex. First 100 rec as one set and next 100 as 2nd set like this.
    Thank you.

    You can send the records as batches useing the debatching feature of db adapter. Refer documentation for implementation details.

  • Picking the records from IT2011.....

    Hi All,
    I am writing the report as per the clients requirement. for this i am using the IT 0007, 2010, 2011. Here i am using the LDB PNP for this report. i have declared  as below.
    INFOTYPES: 0007, 2010,2011.
    The infotypes are filling with the records which are existing in the infotype. Here even old data is also filling in the infotypes that means data other than the selected date from the selection screen.
    To avoide this i have written provide statement as follows.
    provide * from P2011  between pn-begda and pn-endda.
    but i did not get any data from the above statement. My requirement is i need to fetch the records from the IT2011 for the entered date. can anybody tell how to fetch the records from the time infotypes for entered date.
    Thanks & Regards,
    Giri.

    Hi..
    I suggest to use PNPCE LDB and use input as other perion option for selection screen
    and you will get all the recordes valid during the period which you give and the recordes will coming in to the tables 0007, 2010,2011.and just you can read or loop the table.
    TABLES : pernr.
    INFOTYPES: 0001,
               0007,
               2011,
               2010 .
    NODES:  peras.
    TYPES : BEGIN OF ty_final,
           pernr TYPE persno,
           ename  TYPE emnam,
            PBTXT TYPE PBTXT,
            BTRTX TYPE BTRTX,
            END OF ty_final.
    DATA : it_final TYPE TABLE OF ty_final,
           wa_final TYPE ty_final.
    DATA go_table         TYPE REF TO cl_salv_table.
    START-OF-SELECTION.
    GET peras.
      SORT p0001 BY endda DESCENDING.
      READ TABLE p0001 INDEX 1.
      wa_final-pernr = p0001-pernr.
      wa_final-ename  = p0001-ename .
      CALL FUNCTION 'HRWPC_RFC_WERKS_TEXT_GET'
        EXPORTING
          werks      = p0001-werks
        IMPORTING
          werks_text = wa_final-PBTXT.
      CALL FUNCTION 'HRWPC_RFC_BTRTL_TEXT_GET'
        EXPORTING
          werks      = p0001-werks
          btrtl      = p0001-btrtl
        IMPORTING
          btrtl_text = wa_final-BTRTX.
    loop at p2010.
    endloop.
      APPEND wa_final TO it_final.
      CLEAR wa_final.
    END-OF-SELECTION.
      CALL METHOD cl_salv_table=>factory
        IMPORTING
          r_salv_table = go_table
        CHANGING
          t_table      = it_final.
      go_table->display( ).

  • How to fetch all the records from ztable

    Hi 
    My program is outbound program.
    According to the requirement i have to fetch all the records from ztable which are not tranmitted before to the third party and once the records are extracted and written to output file they will be marked as 'X' in the "status" field of that ztable for the next days run.
    How to fetch the records.Please suggest me.
    Thanks,
    Neelima

    HI,
    Fetch all the records whose status is equal to 'X' as whatever data is sent to third party system is marked as 'X' in status field of table after sending.
    You need to first fetch the data into internal table using the select statement where status EQ space. You get the data which is not yet transmitted to third part. And later in the program after trasmitting the data to third party modify the Records in the DB table which are transmitted with Staus eq 'X'.

  • Query not fetched the record

    Hello,
    Could someone help me please ?
    I have a listing of my sales orders and I want to make changes in my order by opening the form and fetched with that record. When I click on that particular orderno in my listing of order and call the form to display the details, it calls the form but says "Query could not fetch the record". I do not know why ? Please help me with the solution.
    Thanx

    Hello,
    I think you are passing orderno to called form as a parameter. If you are using parameter list check..
    1. If parameter data is getting in form correctly ?
    2. Next, have you changed where clause of other block,so that is will display record with passed orderno ?
    I am expecting more details from you.
    Thanx
    Adi

  • Logic to fetch multiple records from BKPF, SRGBTBREL and SOOD

    Hi All
    Need help in developing a login for a report.
    We are trying to display records of a/c documents which have an associated note with them. This involves 4 categories.
    1)     My Document, I attached the note.
    2)     My Document, someone else attached the note.
    3)     No note attached.
    4)     All.
    The logic desired is as below:
    1)     BKPF-BUKRS + BKPF-BELNR + BKPF-GJAHR = SRGBTBREL-INSTID_A. (SRGBTBREL can have multiple records for this combination if multiple notes attached)
    2)     a) SOOD-OBJTY = SRGBTBREL-INSTID_B+17(3).
    b) SOOD-OBJYR = SRGBTBREL-INSTID_B+20(2).
    c) SOOD-OBJNO = SRGBTBREL-INSTID_B+22(12).
    Unique combination.
    I have fetched the details from the three database tables but finding it challenging to put it across in one output internal table. It doesnu2019t cover the scenario where multiple notes are attached to the document (One can be from the same person who created the document and another ones can be from different person or both from the different people).
    Thanks in advance,
    Harsh

    Code Snippet Part 2.
    * Approved Document.
        IF rb_app = 'X'.
          CLEAR wa_sood.
    *      READ TABLE gt_sood INTO wa_sood WITH KEY objtp = lv_objtp
    *                                               objyr = lv_objyr
    *                                               objno = lv_objno.
          LOOP AT gt_sood INTO wa_sood WHERE objtp = lv_objtp
                                         and objyr = lv_objyr
                                         and objno = lv_objno.
    *      IF sy-subrc = 0.
            IF wa_bkpf-usnam <> wa_sood-cronam.
    * Company Code.
              wa_output-bukrs = wa_bkpf-bukrs.
    * A/c Document No.
              wa_output-belnr = wa_bkpf-belnr.
    * Fiscal Year.
              wa_output-gjahr = wa_bkpf-gjahr.
    * Document Type.
              wa_output-blart = wa_bkpf-blart.
    * Document Date.
              wa_output-budat = wa_bkpf-budat.
    * Day On Which Accounting Document Was Entered.
              wa_output-cpudt = wa_bkpf-cpudt.
    * User name.
              wa_output-usnam = wa_bkpf-usnam.
    * Reverse Document Number.
              wa_output-stblg = wa_bkpf-stblg.
    * Transaction Code.
              wa_output-tcode = wa_bkpf-tcode.
    * Short description of contents.
              wa_output-objdes = wa_sood-objdes.
    * Creator Name.
              wa_output-cronam = wa_sood-cronam.
    * Date created.
              wa_output-crdat = wa_sood-crdat.
    * Time created.
              wa_output-crtim = wa_sood-crtim.
    * Status.
              WRITE icon_green_light TO wa_output-light.
              APPEND wa_output TO gt_output.
    *          CLEAR: wa_output,
    *                 wa_sood.
    *        ENDIF.
          ENDIF.
                   ENDLOOP.
        ENDIF.
    * All Documents.
        IF rb_all = 'X'.
    * Company Code.
          wa_output-bukrs = wa_bkpf-bukrs.
    * A/c Document No.
          wa_output-belnr = wa_bkpf-belnr.
    * Fiscal Year.
          wa_output-gjahr = wa_bkpf-gjahr.
    * Document Type.
          wa_output-blart = wa_bkpf-blart.
    * Document Date.
          wa_output-budat = wa_bkpf-budat.
    * Day On Which Accounting Document Was Entered.
          wa_output-cpudt = wa_bkpf-cpudt.
    * User name.
          wa_output-usnam = wa_bkpf-usnam.
    * Reverse Document Number.
          wa_output-stblg = wa_bkpf-stblg.
    * Transaction Code.
          wa_output-tcode = wa_bkpf-tcode.
          CLEAR wa_sood.
    *      READ TABLE gt_sood INTO wa_sood WITH KEY objtp = lv_objtp
    *                                               objyr = lv_objyr
    *                                               objno = lv_objno.
          LOOP AT gt_sood INTO wa_sood WHERE objtp = lv_objtp
                                         and objyr = lv_objyr
                                         and objno = lv_objno.
    *      ELSE.
            IF wa_bkpf-usnam <> wa_sood-cronam.
    * Status.
              WRITE icon_green_light TO wa_output-light.
    * Short description of contents.
              wa_output-objdes = wa_sood-objdes.
    * Creator Name.
              wa_output-cronam = wa_sood-cronam.
    * Date created.
              wa_output-crdat = wa_sood-crdat.
    * Time created.
              wa_output-crtim = wa_sood-crtim.
            ELSE.
    * Status.
              WRITE icon_yellow_light TO wa_output-light.
    * Short description of contents.
              wa_output-objdes = wa_sood-objdes.
    * Creator Name.
              wa_output-cronam = wa_sood-cronam.
    * Date created.
              wa_output-crdat = wa_sood-crdat.
    * Time created.
              wa_output-crtim = wa_sood-crtim.
            ENDIF.
    *      ENDIF.
          ENDLOOP.
          IF sy-subrc <> 0.
            WRITE icon_red_light TO wa_output-light.
          ENDIF.
          APPEND wa_output TO gt_output.
    *      CLEAR: wa_output,
    *             wa_sood.
        ENDIF.
      ENDLOOP.

  • Fetch the records based on number

    Hi experts,
        I have a req like if user give input as 5..it should fetch 5 records from database.
    for example database values are
    SERNR                MATNR
    101                                              A
    102                                              A
    103                                              A
    104                                              A
    105                                              A
    106                                              A
    107                                              A
    If user gives the input as 5 it should fetch 5 records like 101 to 105....Can any body plz help me how to write select query for this..
    Thanks in advance,
    Veena.
    Edited by: s veena on Jan 18, 2011 5:52 AM

    Hi Veena,
    You can use UPTO in your select query. For example
    SELECT MATNR FROM MARA INTO TABLE IT_MATNR UPTO P_NUMBER ROWS.
    "Here P_NUMBER is the Selection Screen Parameter
    It will fetch records based on the number in the parameter.
    Thanks & Regards,
    Faheem.

  • Fetch last record from database table

    hi,
    how to fetch last record from database table.
    plz reply earliest.
    Regards,
    Jyotsna
    Moderator message - Please search before asking - post locked
    Edited by: Rob Burbank on Dec 11, 2009 9:44 AM

    abhi,
    just imagine the table to be BSEG or FAGLFLEXA... then what would be performance of the code ?
    any ways,
    jyotsna, first check if you have a pattern to follow like if the primary key field have a increasing number range or it would be great if you find a date field which stores the inserted date or some thing..
    you can select max or that field or order by descending using select single.
    or get all data.. sort in descending order.(again you need some criteria like date).
    read the first entry. using read itab index 1

  • Less sql query cost ... but more time to fetch the records...

    Hi,
    I faced up to a 'peculiar' situation with a costly db view.
    I attempted to reduce the total view cost
    specifically for 223 records fetched{the cost from 149 reduced to 74,
                                                           the recursive calls from 796 reduced to 224,
                                                           the consistent gets from 311516 reduced to 310341,
                                                            the physical reads from 7 reduced to 0}
    but the amount of time needed to fetch the results is greater than the old version of the db view....{it may be the double...}
    Have you any idea about this...????
    Note: I have got fresh statistics...
             I use db 10g v.2
    Thanks,
    Sim

    Try tracing the query and see what tkprofs shows you.
    alter session set events '10046 trace name context forever, level 12';
    run the query
    alter session set events '10046 trace name context off';
    Then run tkprofs on the trace file produced to see where the database is spending its time/effort. Do likewise for the baseline query in a different session (so you will generate a different trace file).
    If that does not produce anything useful, try using
    alter session set events '10053 trace name context forever';
    run the query
    alter session set events '10053 trace name context off';
    Then examine the trace file to see if you can learn anything.
    Since you have not given us anything more to go on, that is about all the help I can give....

  • How to fetch the data from Ecc to BI ?

    Hi everybody.
    Can anyone briefly explain with the screen shots > How to fetch the datasource from  RSA5 tcode in ECC to BI? How you replicate there? how the INFO PACKAGE , TRANSFORMATIONS, DTP , DSO, INFO CUBE was created? where we see the catalogs for this data.......THANKS IN ADVANCE

    Hi.
    You can follow the below steps to fetch the data from ECC to BI System.
    1>Connection should be there between ECC and BW System.
    2>Go to Tcode-RSA5 in ECC system and find your data source and then activate it.
    3> Go to Tcode-RSA6 in ECC system to check whether your DS is available..if it is there then its been activated.
    4>Go to Extract Checker tcode RSA3 and test the data and make sure data is correct.
    5>login to BW Side..go to tcode RSA1-->Choose your source system. ECC -> double click on it and you will move to Data source>Select your Application component ex, SD,FI ...>Right click and replicate the Datasouce> Now on refresh you can see the datasource in BI System.
    6>Install the related the Infoprovider .. cube or dso ..Connect the datasouurce and create Transformation.
    7> Now create infopackage and run it in ful & init mode then do the delta for the new records.
    Please refer the below link for more details on extraction.
    http://www.trinay.com/SAP%20BW%20Extraction.pdf
    Hope this helps.
    Br.
    Alok

  • From two given tables, how do you fetch the values from two columns using values from one column(get values from col.A if col.A is not null and get values from col.B if col.A is null)?

    From two given tables, how do you fetch the values from two columns using values from one column(get values from col.A if col.A is not null and get values from col.B if col.A is null)?

    Hi,
    Use NVL or COALESCE:
    NVL (col_a, col_b)
    Returns col_a if col_a is not NULL; otherwise, it returns col_b.
    Col_a and col_b must have similar (if not identical) datatypes; for example, if col_a is a DATE, then col_b can be another DATE or it can be a TIMESTAMP, but it can't be a VARCHAR2.
    For more about NVL and COALESCE, see the SQL Language manual: http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions119.htm#sthref1310
    I hope this answers your question.
    If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all tables involved, and also post the results you want from that data.
    Explain, using specific examples, how you get those results from that data.
    Always say which version of Oracle you're using (e.g., 11.2.0.2.0).
    See the forum FAQ: https://forums.oracle.com/message/9362002

Maybe you are looking for

  • SELECT query takes too much time! Y?

    Plz find my SELECT query below: select w~mandt wvbeln wposnr wmeins wmatnr wwerks wnetwr wkwmeng wvrkme wmatwa wcharg w~pstyv wposar wprodh wgrkor wantlf wkztlf wlprio wvstel wroute wumvkz wumvkn wabgru wuntto wawahr werdat werzet wfixmg wprctr wvpma

  • JMS Adapter - RFC (Sync ) RFC Repsonse- JMS Adapter

    Hello, We have 40K + messages coming in from a 3rd party system through JMS Adapter. We need to process the messages in R/3 using RFC (sync) adapter and send the response back to the 3rd party system   “with the messageID (CorrelationID)” using a JMS

  • 950 GMA Graphics

    I've got a Macbook with a Core 2 Duo 2.0 Ghz processor, 1GB of RAM(memory) and Intel 950 GMA graphics. Visit http://intel.com/products/chipsets/gma950/index.htm and you'll see that the 950 GMA supports up to 224MB of video memory. Apple uses the same

  • Error "Connection reset"

    Hi people, We've created a XI 3.0 scenario in order to integrate a Java application with MDM First of all, we've configurated a communication channel sender and a communication channel receiver ftp then, we tested the scenario with xmlspy, and when w

  • Downloading a movie.

    Hello, I am trying to download a movie "Bronson", I have paid for it and it keeps on saying that there is an unknown error (err-50) and it tells me to check my connection and try again, but as you can see my connection is perfectly normal. Everytime