Index not used in a simple query

Hi all,
I have a query which is using only 2 tables linked with an indexed column, i'm surprised that the 2 tables are not using index and they are full scanned. here is some details:
Table a: T1 (col11 number, col12 varchar2) indexed on col11 (primary key): rows number=4 millions indexe: idx1 on col11
Table b: T2 (col21 number, col22 varchar2) indexed on col21 (primary key): rows number=3 millions indexe: idx2 on col21
select a.col12, b.col22 from T1 a, T2 b where a.col11=b.col21
The execution plan is:
Operation     Object Name     Rows     Bytes     Cost     Object Node     In/Out     PStart     PStop
SELECT STATEMENT Optimizer Mode=ALL_ROWS          3 M           32356                                          
  PX COORDINATOR                                                                
    PX SEND QC (RANDOM)     SYS.:TQ10002     3 M     67 M     32356       :Q1002      P->S       QC (RANDOM)      
      HASH JOIN          3 M     67 M     32356       :Q1002      PCWP                        
        PX RECEIVE          3 M     20 M     7376       :Q1002      PCWP                        
          PX SEND HASH     SYS.:TQ10001     3 M     20 M     7376       :Q1001      P->P       HASH             
            PX BLOCK ITERATOR          3 M     20 M     7376       :Q1001      PCWC                        
              TABLE ACCESS FULL     T2     3 M     20 M     7376       :Q1001      PCWP                        
        BUFFER SORT                             :Q1002      PCWC                        
          PX RECEIVE          3 M     44 M     24708       :Q1002      PCWP                        
            PX SEND HASH     SYS.:TQ10000     3 M     44 M     24708              S->P       HASH             
              TABLE ACCESS FULL     T1     3 M     44 M     24708                                           Thanks

Hi Herald,
Thanks for your reply
when selecting only the columns which are indexed, it is using the index
select a.account_link_code_n, b.account_link_code_n from gsm_sims_master a, gsm_service_mast b
where a.account_link_code_n=b.account_link_code_n
See the execution below:
Operation     Object Name     Rows     Bytes     Cost     Object Node     In/Out     PStart     PStop
SELECT STATEMENT Optimizer Mode=ALL_ROWS          3 M           11051                                          
  PX COORDINATOR                                                                
    PX SEND QC (RANDOM)     SYS.:TQ10002     3 M     44 M     11051       :Q1002      P->S       QC (RANDOM)      
      HASH JOIN          3 M     44 M     11051       :Q1002      PCWP                        
        PX RECEIVE          3 M     20 M     7376       :Q1002      PCWP                        
          PX SEND HASH     SYS.:TQ10001     3 M     20 M     7376       :Q1001      P->P       HASH             
            PX BLOCK ITERATOR          3 M     20 M     7376       :Q1001      PCWC                        
              TABLE ACCESS FULL     GSM_SERVICE_MAST     3 M     20 M     7376       :Q1001      PCWP                        
        BUFFER SORT                             :Q1002      PCWC                        
          PX RECEIVE          3 M     22 M     3403       :Q1002      PCWP                        
            PX SEND HASH     SYS.:TQ10000     3 M     22 M     3403              S->P       HASH             
              INDEX FAST FULL SCAN     ABILLITY.SIM_ACC_LNK_CD_IDX     3 M     22 M     3403                                                     But using hints has a very bad execution plan and a very high cost:
select /*+ index(a) index(b) */ a.account_link_code_n, b.account_link_code_n from gsm_sims_master a, gsm_service_mast b
where a.account_link_code_n=b.account_link_code_n
Operation     Object Name     Rows     Bytes     Cost     Object Node     In/Out     PStart     PStop
SELECT STATEMENT Optimizer Mode=ALL_ROWS          3 M           31899                                          
  HASH JOIN          3 M     44 M     31899                                          
    INDEX FULL SCAN     ABILLITY.GSM_SERV_MAST#ACLINK_CODE$PK     3 M     20 M     8158                                          
    INDEX FULL SCAN     ABILLITY.SIM_ACC_LNK_CD_IDX     3 M     22 M     15709                                           Thank you
Luc

Similar Messages

  • Index not usable in my simple query

    Hi,
    I have created index for INC_ID coloumn but when I use it in queries, it is not working. Verified the index it is on valid stat only, eventhough its not using in queries.
    can you please suggest why it is not using. what I have to do for this. I am going to use this query in procedures. My DBA will not allow to use hints in queries.
    Thanks in advance
    select * from TAB_FLNDAT t where t.INC_ID = 2055Explain plan
    SELECT STATEMENT, GOAL = ALL_ROWS               339682     19174     7631252
    TABLE ACCESS FULL     AIMS_OWNR     ONT_T_FLNDATASTATUS_AGNT     339682     19174     7631252Total no of records in TAB_FLNDAT table -- 21427155
    Table DDL
    -- Create table
    create table TAB_FLNDAT
      INC_ID                VARCHAR2(25),
      INC_PERIOD            NUMBER,
      AREA_DEF_ID           NUMBER,
      DEAL_CODE             VARCHAR2(50),
      FLNMTH                DATE,
      DOCNUM                NUMBER(10),
      CPNNUM                NUMBER(3),
      CTRY_ISO_CODE         VARCHAR2(2),
      FLNLOCCOD             VARCHAR2(7),
      FLNCTYCOD             VARCHAR2(3),
      FLNDATAKEY            NUMBER,
      MAIN_CLASS            VARCHAR2(17),
      BOKCLSCOD             VARCHAR2(1),
      ORIGIN                VARCHAR2(6),
      DESTINATION           VARCHAR2(3),
      FINAL_ST          NUMBER(1),
      SALE_ST           NUMBER(1),
      AGENT_ST          NUMBER(1),
      EKOAL_ST          NUMBER(1),
      FARE_ST           NUMBER(1),
      PAPERTKT_ST       NUMBER(1),
      OND_ST            NUMBER(1),
      RBD_ST            NUMBER(1),
      FLIGHT_ST         NUMBER(1),
      FBC_ST            NUMBER(1),
      DEAL_ST           NUMBER(1),
      DEAL_ST_CODE      VARCHAR2(50),
      ONDRBD_ST         NUMBER(1),
      DATE_ST           NUMBER(1),
      CODESHARE_ST      NUMBER(1),
      HPMCO_ST          NUMBER(1),
      CTRY_ST           NUMBER(1),
      LC_REVENUE            NUMBER(18,3),
      CURCOD                VARCHAR2(3),
      LC_NET_NET            NUMBER(21,3),
      REPORTING_CURRENCY    VARCHAR2(3),
      CARDSGCOD             VARCHAR2(2),
      CARNUMCOD             VARCHAR2(3),
      DOCTYP                VARCHAR2(3),
      FLNDAT                DATE,
      FLTNUM                VARCHAR2(4),
      FLNSEC                VARCHAR2(6),
      FLNITN                VARCHAR2(200),
      SALMTH                DATE,
      SALCTYCOD             VARCHAR2(3),
      SALLOCCOD             VARCHAR2(10),
      FABCOD                VARCHAR2(50),
      IATA_FABCOD           VARCHAR2(50),
      TOTPAX                NUMBER(9),
      CPNCNT                NUMBER(6),
      PAXCNT                NUMBER(6),
      CBKGRSAMT             NUMBER(15,3),
      CBKNETAMT             NUMBER(15,3),
      CBKCOMAMT             NUMBER(15,3),
      CBKORCAMT             NUMBER(15,3),
      COSGRSAMT             NUMBER(15,3),
      COSNETAMT             NUMBER(15,3),
      COSCOMAMT             NUMBER(15,3),
      COSORCAMT             NUMBER(15,3),
      COUCOD                VARCHAR2(7),
      TOUCOD                VARCHAR2(20),
      OLD_DOCNUM            NUMBER(10),
      ON_OFFLINE            CHAR(1),
      ENTFABCOD             VARCHAR2(50),
      EKOALIND              CHAR(1),
      ONL_INTL_INDICATOR    VARCHAR2(1),
      FULL_ITINERARY        VARCHAR2(500),
      RPD_COSGRSAMT         NUMBER(15,3),
      RPD_COSNETAMT         NUMBER(15,3),
      RPD_COSCOMAMT         NUMBER(15,3),
      RPD_COSORCAMT         NUMBER(15,3),
      SALDAT                DATE,
      REPENDDAT             DATE,
      ETKIND                VARCHAR2(1),
      MKTFLTNUM             VARCHAR2(8),
      CODSHRIND             VARCHAR2(1),
      FARE_TYPE             VARCHAR2(50),
      CMM_CUSTOMER_ID       VARCHAR2(25),
      OPERATING_COST        NUMBER(18,3),
      ACM_AMOUNT            NUMBER(18,3),
      GDS_COST              NUMBER(18,3),
      OCCURRENCE            NUMBER(3),
      PROCESS_MONTH         DATE,
      ONTRACK_FBC           VARCHAR2(100),
      EKHMCOIND             CHAR(1),
      RPT_FLNITN            VARCHAR2(200),
      CORPORATE_ID          VARCHAR2(25),
      CORP_DEAL_CODE        VARCHAR2(50),
      OSI_DATA              VARCHAR2(100),
      PAX_NAME              VARCHAR2(1000),
      PAX_TYPE              VARCHAR2(1),
      BOOKING_DATE          DATE,
      SKYWARDS_NO           VARCHAR2(11),
      PROCESSED             CHAR(1),
      FLTFULROU             VARCHAR2(30),
      FLTROUFLNLEG          VARCHAR2(30),
      FLNACFTYP             VARCHAR2(10),
      SEQNO                 NUMBER(3),
      FORM_OF_PAYMENT       VARCHAR2(9),
      TRPTYP                VARCHAR2(1),
      FOPDTL                VARCHAR2(300),
      PNR_ID                NUMBER(15),
      VALUE_ADDED_COST      NUMBER(18,3),
      LINK_OD               VARCHAR2(45),
      TEMP                  VARCHAR2(50),
      ONT_FBC_TEMP          VARCHAR2(100),
      ONT_FBC_TYPE_TEMP     VARCHAR2(20),
      ONT_FBC_ST_TEMP   NUMBER(1),
      INC_FINAL_ST_TEMP NUMBER(1),
      TEMP_FLAG             VARCHAR2(1),
      MODIFIED              CHAR(1),
      MATCH_FLAG            CHAR(2)
    tablespace A_DAT
      pctfree 10
      initrans 1
      maxtrans 255
      storage
        initial 64K
        next 1M
        minextents 1
        maxextents unlimited
    -- Create/Recreate indexes
    create index IND_FLNST_AGNT_DOC on TAB_FLNDAT (DOCNUM)
      tablespace A_IDX
      pctfree 10
      initrans 2
      maxtrans 255
      storage
        initial 64K
        next 1M
        minextents 1
        maxextents unlimited
    create index IND_FLNST_AGNT_FLNMTH on TAB_FLNDAT (FLNMTH)
      tablespace A_IDX
      pctfree 10
      initrans 2
      maxtrans 255
      storage
        initial 64K
        next 1M
        minextents 1
        maxextents unlimited
    create bitmap index IND_FLNST_AREDEF on TAB_FLNDAT (AREA_DEF_ID)
      tablespace A_IDX
      pctfree 10
      initrans 2
      maxtrans 255
      storage
        initial 64K
        next 1M
        minextents 1
        maxextents unlimited
    create index IND_FLNST_FLNDATAKEY on TAB_FLNDAT (FLNDATAKEY)
      tablespace A_IDX
      pctfree 10
      initrans 2
      maxtrans 255
      storage
        initial 64K
        next 1M
        minextents 1
        maxextents unlimited
    create bitmap index IND_FLNST_INCPERIOD on TAB_FLNDAT (INC_PERIOD)
      tablespace A_IDX
      pctfree 10
      initrans 2
      maxtrans 255
      storage
        initial 64K
        next 1M
        minextents 1
        maxextents unlimited
    create index IND_FLNST_INC_ID on TAB_FLNDAT (INC_ID)
      tablespace A_IDX
      pctfree 10
      initrans 2
      maxtrans 255
      storage
        initial 64K
        next 1M
        minextents 1
        maxextents unlimited
      );Edited by: venkatraman.L on Mar 18, 2012 12:51 PM
    Edited by: venkatraman.L on Mar 18, 2012 12:52 PM

    venkatraman.L wrote:
    yes if I use Quotes it is using index. It should be a numeric field.
    Thanks Etbin. I was a little surprised by that. i thought oracle will always implicitly convert to the type of the column. But that happens only for insert/updates.
    From the docs (http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements002.htm):
    The following rules govern the direction in which Oracle Database makes implicit datatype conversions:
    <li>During INSERT and UPDATE operations, Oracle converts the value to the datatype of the affected column.
    <li>During SELECT FROM operations, Oracle converts the data from the column to the type of the target variable.
    <li>When manipulating numeric values, Oracle usually adjusts precision and scale to allow for maximum capacity. In such cases, the numeric datatype resulting from such operations can differ from the numeric datatype found in the underlying tables.
    <li>When comparing a character value with a numeric value, Oracle converts the character data to a numeric value.
    <li>Conversions between character values or NUMBER values and floating-point number values can be inexact, because the character types and NUMBER use decimal precision to represent the numeric value, and the floating-point numbers use binary precision.
    Rule 4 is what happened in your case.

  • Indexes not used in Oracle 8i

    Hi Everybody,
    Does anybody know how can i know which indexes are not used in our Oracle 8iR3 Database.
    We need to purge as soon as possible all indexes not used
    in our Datawarehousing system because they're growing and growing.
    I know there's some mechanism in Oracle 9i to query which are unused is it possible to simulate something similar?
    Kind regards and thank you in advance.
    José Luis Pérez
    [email protected]

    Are you asking about index monitoring in 8i? One way (and there aren't very many at all) of doing this is to collect (query them out of the DD) execution plans and scan those for index usage.

  • Index not using in select query

    Hello All,
    I have table CITY with 2 composite primary key CITYCODE, COUNTRYCODE of course they are NOT NULL.
    i created an index.
    CREATE UNIQUE INDEX CITYKEY ON CITY     (CITYCODE, COUNTRYCODE);
    then i run explain plan as follows
    explain plan for
    select CityCode, CityName, CountryCode, LexiconId, UserId, Status
    from City
    where CountryCode = 'IR';
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | 803 | 57013 | 112 (2)| 00:00:02 |
    |* 1 | TABLE ACCESS FULL| CITY | 803 | 57013 | 112 (2)| 00:00:02 |
    later i analyze table rebuild indexes but again explain plan gives me the same result.
    Could any 1 please guide me to solve this issue.
    Thanks
    Edited by: mohsin javed on Feb 17, 2011 10:10 AM

    Hello All,
    Again with one more query which having join:
    table SDNMASTER with sdnid pk and SDNMASTER_PK index on SDNID, table SDNALIAS sdnid pk and SDNALIAS_PK index on SDNID.
    explain plan for
    SELECT a.SourceId,
              a.SourceName,
              b.LastName,
              a.Status
    FROM SdnMaster a,
              SdnAlias b
    WHERE a.SdnId = b.SdnId
    AND a.Status in ('1', '3')
    AND b.LastName is not null
    ORDER BY b.LastName;
    PLAN_TABLE_OUTPUT
    Plan hash value: 1153036645
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | 2399 | 64773 | 69 (5)| 00:00:01 |
    | 1 | SORT ORDER BY | | 2399 | 64773 | 69 (5)| 00:00:01 |
    |* 2 | HASH JOIN | | 2399 | 64773 | 68 (3)| 00:00:01 |
    |* 3 | TABLE ACCESS FULL| SDNALIAS | 2399 | 21591 | 11 (0)| 00:00:01 |
    |* 4 | TABLE ACCESS FULL| SDNMASTER | 4562 | 82116 | 56 (2)| 00:00:01 |
    Even after analyzing table and rebuilding index its not using the index..
    Thanks

  • Index not used on view when table stats exist

    Hello,
    I would be grateful if someone comes with ideas on the following problem I'm currently facing.
    I have a table with XMLTYPE data type column:
    sql-->desc ACFBNK_STMT008
    RECID     NOT NULL     VARCHAR2(200)
    XMLRECORD XMLTYPE
    I have a view V_ACFBNK_STMT008 on that table, in which the view columns are defined as extracted tags values from the XMLTYPE field, e.g. for the view field N_BOOKING_DATE:
    numcast(extractValue(xmlrecord,'/row/c25')) "N_BOOKING_DATE"
    (note: numcast is just a simple function that returns TO_NUMBER of its input argument)
    I have also a function-based index on this field of the table:
    CREATE INDEX train4.NIX_ACFBNK_STMT008_C25
    ON train4.ACFBNK_STMT008("TRAIN4"."NUMCAST"(extractValue(xmlrecord,'/row/c25')))
    And so, I'm executing on the view the following SQL statement:
    SELECT RECID FROM V_ACFBNK_STMT008 WHERE (N_BOOKING_DATE > TO_NUMBER('20070725'));
    Now, the problem comes: when statistics exist on the view base table (that is ACFBNK_STMT008) then the above statement is not using the index and is making a "table access full". When I delete the statistics for the table then the SQL runs fast with an "index range scan".
    Which is further strange - when I change the ">" operand with a "=" the SQL statement correctly captures the index regardless of whether or not statistics exist.
    I've tried to manually rewrite the SQL and include the "numcast" function in it:
    SELECT RECID FROM TRAIN4.V_ACFBNK_STMT008 WHERE ( N_BOOKING_DATE>train4.numcast(TO_NUMBER( '20010725' ) ));
    And in this way the index is used OK even with statistics existing!
    But regretfully I don't have a way to change the application and the SQL, so the only things I can change is the view and/or the index.
    Thank you in advance,
    Evgeni
    P.S.
    I've tried gathering statistics in both the following ways but still the problem persists:
    sql-->analyze table train4.ACFBNK_STMT008 compute statistics;
    sql-->exec dbms_stats.gather_table_stats(ownname=>'TRAIN4', tabname=>'ACFBNK_STMT008', CASCADE=>TRUE, partname=>NULL);

    Oh, and I forgot to mention: I cannot change the view definition as well (for example, to remove the "numcast"), since every now and then the application would recreate it automatically with the same code. :(

  • Index not picked up by the query

    I am doing complex joining with multiple tables ..
    table A has got 104M records other tables are having circa 100K records ...
    Now I have created index on table A on a field which is being used in filter condition ... but when I analysing the explain plan of the query - I can see table A has been fully accessed - index is not being used.
    Can anyone put some llight why it is happening ... Is it somthing to do with what I am selecting in the query ...

    You can search the forum for the same question and get other threads on this topic.
    The short answer is that the index isn't being used because the optimizer decides that doing the full table scan (FTS) is more efficient - it may or may not be right. There are lots of factors that could make the cost-based optimizer (CBO) not use an index, but the more common ones are
    * modifying a WHERE clause column value with ||, arithmetic, or a function (index supression)
    * You're going to read all or most of the rows in the table anyway, so the index would not help (at least, the CBO might think so)

  • How to find BW Indexes not used in a long time

    Hello all,
    I am attempting to find out which indexes have not been used in the last 2 years in a effort to eliminate indexes from our BWA environment.  Is there a way I can query our BW environment to figure this out?  Is there a table, or group of tables in combination, that might be able to help me out here?
    Thanks to you all.

    Thanks for such a quick response.
    I am assuming the following about the table :
    -     Column u201CCALDAYu201D contains a date value for each day the Index is active.
    -     Column u201CBIA_USEDu201D contains a value that is iterated for the given day each time the Index is used.
    -     Column u201CBIA_NOTPOSSIBLEu201D contains a value representing how many times a query could not access this Index.
    -     Column u201CNO_BIAu201D tells if a BWA Index exists at all on any of my BWA Blades
    -     Column u201CBIA_TECHINAu201D ????????
    -     Column u201CBIA_INAu201D ???????
    -     Column u201CDB_FALLBACKu201D ???????
    I am not sure if my understanding of the column is correct.  Can you tell me they are?  The columns with u201C???????u201D mean I have no solid understanding of how to use these columns at all.
    Thanks

  • Bitmap Index Not Used in PROD and used in DEV

    I am in a situation where in in DEV Bitmap Index is used and in PROD bitmap Index is not used. I checked the count, in PROD I have 10 mil rows and in DEV I have 16 mil rows. Optimizer is CHOOSE and also when I tried to force to use index in PROD, I got higher cost.
    Any suggestions why Index is not used in PROD as opposed to DEV

    As other says, no guarantee that the same query with same setting OS, ORACLE to produce the same execution plan. Also, as Justin said, dont every take cost as your tuning parameter, pay attention to response time, also, number of logical reads and physical reads. What are the wait events during?
    For an index, most important factors are, blevel, clustering_factor, number of distinct values. Clustering actor make a lot of difference. You said, when you force index to use, your performance has gained. If so, why not, why the HINTS there in place? Go ahed and use it, but, after all the R&D. Are the Optimizer* paraemters same on the both databases?
    If possible, post the execution plan of the query, with HINT and without HINT as well.
    Jaffar

  • URGENT: index not used from jdbc

    Hi,
    This is for java app and sybase database.
    I have a 'select' query for which index is properly created. If I use plain jdbc connection, index is used and result comes pretty fast. but if I use connection from my app, it does not use index and takes long time.
    I am using PreparedStatement in both cases. I have compared all connection properties for both cases and they are exactly same. also, if I run that query using any sql tool like isql, result comes out pretty fast.
    Am I missing any other parameter related to connection?

    akshay_crest wrote:
    I have a 'select' query for which index is properly created. If I use plain jdbc connection, index is used and result comes pretty fast. but if I use connection from my app, it does not use index and takes long time."Plain" meaning like a little test application that runs the same query?
    Most likely reasons.
    1. If the answer to the above is yes, then you probably are not running the same query.
    2. You are not timing them in the same way and something else is slowing it down.
    3. Network problem.
    4. Not connecting to the same database/table.

  • Index not used - why?

    Hi,
    I build a SQL-Report with this Statement:
    SELECT wb_mitarbeiter, wb_datum, wb_zeit, wb_kennzeichen, wb_ziel,
    sb_mitarbeiter, sb_datum, sb_zeit, sb_kennzeichen, sb_ziel,
    DECODE (wb_kennzeichen - sb_kennzeichen, 0, '', 'Diff') flag
    FROM lgs_items_org
    WHERE (sb_datum >= :p14_von OR -1 = :p14_von)
    AND (sb_datum <= :p14_bis OR -1 = :p14_bis)
    AND sb_mitarbeiter > 0
    AND (wb_mitarbeiter = :p14_wb_ma OR -1 = :p14_wb_ma)
    ORDER BY wb_datum ASC, wb_zeit ASC
    The result is correct, but a full table scan is performed, no index is used and needs very much time.
    In SQL*Plus I run this statement (:P14_von + :P14_bis replaced):
    SELECT wb_mitarbeiter, wb_datum, wb_zeit, wb_kennzeichen, wb_ziel,
    sb_mitarbeiter, sb_datum, sb_zeit, sb_kennzeichen, sb_ziel,
    DECODE (wb_kennzeichen - sb_kennzeichen, 0, '', 'Diff') flag
    FROM lgs_items_org
    WHERE sb_mitarbeiter > 0
    AND (sb_datum >= '20051122' OR -1 = '20051122')
    AND (sb_datum <= '20051122' OR -1 = '20051122')
    AND (wb_mitarbeiter = :p14_wb_ma OR -1 = :p14_wb_ma)
    ORDER BY wb_datum ASC, wb_zeit ASC
    Here an index is used. The result is correct and very fast.
    1) Why is the index?
    and
    2) How can I change the statement, to use the index?
    Thanks for any idea!
    Regards,
    Frank

    Thanks for your help! Thanks for the book-tip!
    I got it. The problem is the where-part.
    and (wb_mitarbeiter = :Pxy OR -1 = :Pxy) does NOT use an index, because the 2.part of the OR does not use an indexed column.
    But and wb_mitarbeiter = :Pxy (without the OR part) uses the index.
    My solution: I changed the sql-structured Query into a PL/SQL-Function-Body Report (a little bit longer :-( )
    declare
    q varchar2(5000);
    begin
    q := 'select NAME||'' - '' ||WB_MITARBEITER WB_MITARBEITER';
    q := q||', to_char(to_date(WB_DATUM,''YYYYMMDD''),''DD.MM.YYYY'') "DATUM WB"';
    q := q||', WB_ZEIT, WB_KENNZEICHEN WB_KZ, WB_ZIEL';
    q := q||', SB_MITARBEITER';
    q := q||', to_char(to_date(SB_DATUM,''YYYYMMDD''),''DD.MM.YYYY'') "DATUM SB"';
    q := q||', SB_ZEIT, SB_KENNZEICHEN SB_KZ, SB_ZIEL';
    q := q||', DECODE(WB_KENNZEICHEN - SB_KENNZEICHEN,0,'''',''Diff'') Flag';
    q := q||' from wwcontrol.LGS_ITEMS_ORG, wwcontrol.LGS_PERSONAL_ORG';
    q := q||' where SB_MITARBEITER > 0 AND WB_MITARBEITER = PINNR';
    if :P14_VON <> -1 THEN
    q := q||' and SB_DATUM >= :P14_VON ';
    end if;
    if :P14_BIS <> -1 THEN
    q := q||' and SB_DATUM <= :P14_BIS ';
    end if;
    if :P14_WB_MA <> -1 THEN
    q := q||' and WB_MITARBEITER = :P14_WB_MA ';
    end if;
    if :P14_DIFF = 1 THEN
    q := q||' and WB_KENNZEICHEN - SB_KENNZEICHEN <> 0';
    end if;
    q := q||' order by WB_DATUM asc, WB_ZEIT asc';
    return q;
    end;
    Is there a way to do this smarter?
    Regards,
    Frank

  • Some indexes not used in JDBC call

    Hello everyone,
    I'm having a problem where a JDBC PreparedStatement without bind parameters can take more than a minute to execute a query that takes less than a second to execute in SQL*Plus. The query is identical, the database instance is the same, neither query is cached, and the query returns only 18 records with 11 columns all of which are either VARCHAR2 or NUMBER. I'm using Oracle's JDBC 2.0 drivers (classes12.jar) and Oracle 8i (Release 8.1.7.4.0) database. Oracle DB is set to use the cost-based optimizer.
    I did an explain plan in SQL*Plus and via JDBC. It turns out that some of the unique indexes that are used when executing the query in SQL*Plus are not used when executing via JDBC.
    Does anyone know why this would happen?
    Thanks,
    Jeff

    since you use a bind variable,oracle's cost based
    optimizer can not decide correctly whether to use
    this index is a good idea.The OP said he was NOT using bind variables in the testing within the SQL String of the PreparedStatement so this comment doesn't address his current problem.
    To the OP:
    Sounds like you have an Oracle permissions issue not related to JDBC specifically. Shouldn't be to hard to determine what the permission differences are between the two userids.
    Regarding proper use of PreparedStatement
    ALWAYS use PreparedStatement and host variables. There are 100's if not 1000's of posts documentation why this is a good idea here on the forums. Here are a couple of reasons why PreparedStatement with Host variables is a good idea.
    1) PreparedStatement using host variables will provide you best overall system performance.
    2) PreparedStatement using host variables eliminates the very real security risk of SQL injection.
    3) PreparedStatement using host variables aids the programmer in handling escape sequence and the frequent errors associated with special characters within SQL strings.
    4) PreparedStatement using host variables allows JDBC to take care of the majority of data conversions between Java and your database simplifying and standardizing data conversion coding
    There are isolated cases where using Host variables impedes performance when compared against dynamic SQL (SQL with literals) but they are few and far between (1: 1000?) and the standard should be to always use PreparedStatement with host variables.
    Good luck on resolving your current problem and remember to always use PreparedStatements WITH host variables when coding in Java!
    WFF

  • Index not used

    Hello all,
    I have a large table (20 million rows) partitioned by date (2 million rows/part) that includes an hour column. The hour data is stored in the '99' format as we only have 24 values/day. However the client wants the data displayed as '9999' so we created a set of views that display the data as hour||'00'. Our base table unique index includes the hour column, but now all the queries are seen by the database as where hour ='1100' as oposed to where hour='11' and the index is not used any more. How can we tell the optimizer that the '1100' that the client is selecting through the web views is actually our '11' that is stored in the already existing index?
    Please note that I would like to avoid having to create a function index. The existing index already takes 1.3Gb, don't wnt to spend another 1.3 Gb.
    Thank you very much,

    Your description doesn't quite compute.
    Access to rows in the WHERE clause has no relationship to what is displayed from the SELECT clause of a view. You may want to post the DDL and DML to explain how this is happening.

  • Bitmap index not used

    I exported/imported a schema. Same Oracle version (10.2.0.3), same server (HP-UX/Itanium).
    I have a select that doesn't use a bitmap index in the new database. The same bitmap index is used in the old database.
    I run analyze, tried hinting (index, index_combine) nothing helped, I could not force the optimizer to use the index in the new database. Any suggestion?
    Thanks

    Hi Andras
    I would strongly recommend taking a 10053 trace and see what the CBO is up to.
    Cheers
    Richard Foote
    http://richardfoote.wordpress.com/

  • Index not used for order by/subsequence

    Hello,
    I can't seem to get DBXML to efficiently return an ordered subsequence (so that a web page can do pagination in order). I have 100,000 entries in my test container and the following indexes:
    Index: unique-node-metadata-equality-string for node {http://www.sleepycat.com/2002/dbxml}:name
    Index: edge-element-equality-dateTime for node {}:when
    Index: edge-element-equality-double for node {}:whenNumber
    queryPlan "
    for $x in (collection('test.dbxml')/root)
        order by $x/whenNumber
        return subsequence($x, 1, 10)
    "Gives me a plan with a sequential scan in it:
    <XQuery>
      <Return>
        <OrderByTuple direction="ascending" empty="least" stable="false" collation="http://www.w3.org/2005/xpath-functions/collation/codepoint">
          <ForTuple uri="" name="x">
            <ContextTuple/>
            <QueryPlanToAST>
              <StepQP axis="child" name="root" nodeType="element">
                <SequentialScanQP container="test.dbxml" nodeType="document"/>
              </StepQP>
            </QueryPlanToAST>
          </ForTuple>
          <TreatAs>
            <PromoteUntyped uri="http://www.w3.org/2001/XMLSchema" name="string">
              <Atomize>
                <QueryPlanToAST>
                  <StepQP axis="child" name="whenNumber" nodeType="element">
                    <VariableQP name="x"/>
                  </StepQP>
                </QueryPlanToAST>
              </Atomize>
            </PromoteUntyped>
            <SequenceType type="item()?"/>
          </TreatAs>
        </OrderByTuple>
        <Function name="{http://www.w3.org/2005/xpath-functions}:subsequence">
          <QueryPlanToAST>
            <VariableQP name="x"/>
          </QueryPlanToAST>
          <NumericLiteral value="1.0E0" typeuri="http://www.w3.org/2001/XMLSchema" typename="double"/>
          <NumericLiteral value="1.0E1" typeuri="http://www.w3.org/2001/XMLSchema" typename="double"/>
        </Function>
      </Return>
    </XQuery>The index is used correctly if I do a conditional query as I woudl expect

    Hi,
    These look like queryplan generator issues. I'm looking into it. Thanks.
    Best regards,
    Rucong Zhao
    Oracle Berkeley DB XML

  • Find Indexes not used

    Hi ,
    Is there any script that i can run to see all the indexes that are not used in the Entire batch Jobs (these batch job has many DML's on large number of tables) but present(in valid state) during the Run.
    The main idea is to have these indexes and see if we can drop these indexes(if there is not impact on other operations).
    Thanks for the time,
    Bob

    http://www.oracle-base.com/articles/10g/IndexMonitoring.php

Maybe you are looking for

  • Mailboxes STILL empty after importing from 10.3.9 to 10.4.11

    Hi... I've been spending the last couple of days trawling the web (incl. this site) for solutions and have found similar postings, but they were either unresolved, or didn't really match my situation. So please excuse me if this is partially repetiti

  • OID - OperationalNotSupportedException: [LDAP: error code 53 - Server ... ]

    Hi, I'm using JNDI (Java Native Directory Interface) accessing OID, and I received a javax.naming.OperationalNotSupportedException: [LDAP: error code 53 - Server currently in read only mode.  Update operations not allowed]; I am not sure what's wrong

  • ACE 4710 and load balancing with sticky cookie

    Configuring load balancing with SSL termination and stickiness for a couple of citrix xenapp servers.  I'm doing a source-NAT as the ACE resides in the DMZ and these particular servers reside on the inside arm of the firewall.  The ACE is in bridged

  • CL_RSR_RRK0_HIERARCHY error while using RRI

    Hello all, I am trying to do RRi from one report to another. I have a tried the RRI thing with the infoobject and it works fine. But the object actually has Hierarchy which eventually the users will be usin. When I do the whole procedure same but now

  • Cross Fade?

    Hi, this might very well be a silly beginner question. Can I do cross fades in Soundbooth with two audio files in the same track? It's possible to do so in Premiere Pro, I'm wondering why I can't find something like this in Soundbooth. Thanks!