cost after and before creating indexes

Hello
sql_advisor gives me the following Plan explain before and after the creation of the index. But in the new explain plan CPU % is equal to zero.

How is that possible?
I understand the plan to explain it wrongly?
1- Original                                                     
-----------                                                     
Plan hash value: 1851261115                                     
                                                                
-------------------------------------------------------------------------------------                                                                                                          
| Id  | Operation         | Name            | Rows  | Bytes | Cost (%CPU)| Time     |                                                                                                          
-------------------------------------------------------------------------------------                                                                                                          
|   0 | SELECT STATEMENT  |                 |     1 |    47 |     3   (0)| 00:00:01 |                                                                                                          
|*  1 |  TABLE ACCESS FULL| PS_CDM_TRANSFER |     1 |    47 |     3   (0)| 00:00:01 |                                                                                                          
-------------------------------------------------------------------------------------                                                                                                          
                                                                
Predicate Information (identified by operation id):             
---------------------------------------------------             
                                                                
   1 - filter("SERVERNAMERUN"=:1 AND "TRANSFERSTATUS"='2' AND   
              "TRANSFERATTEMPTCNT"<=:2 AND "NEXTTRANSFERDTTM"<=CAST(SYSTIMESTAMP(6) AS                                                                                                         
              TIMESTAMP))                                       
                                                                
2- Using New Indices                                            
--------------------                                            
Plan hash value: 3796702440                                     
                                                                
-----------------------------------------------------------------------------------------------                                                                                                
| Id  | Operation                   | Name            | Rows  | Bytes | Cost (%CPU)| Time     |                                                                                                
-----------------------------------------------------------------------------------------------                                                                                                
|   0 | SELECT STATEMENT            |                 |     1 |    47 |     0   (0)| 00:00:01 |                                                                                                
|*  1 |  TABLE ACCESS BY INDEX ROWID| PS_CDM_TRANSFER |     1 |    47 |     0   (0)| 00:00:01 |                                                                                                
|*  2 |   INDEX RANGE SCAN          | IDX$$_02420001  |     1 |       |     0   (0)| 00:00:01 |                                                                                                
-----------------------------------------------------------------------------------------------                                                                                                
                                                                
Predicate Information (identified by operation id):             
---------------------------------------------------             
                                                                
   1 - filter("SERVERNAMERUN"=:1 AND "TRANSFERSTATUS"='2' AND "TRANSFERATTEMPTCNT"<=:2)                                                             
   2 - acce...   
Thank you and best regards.

Ok.

Tags: Database

Similar Questions

  • alternative to delete and re-create indexes

    Hi all

    We use Oracle 11.2.0.2. We have a script where we fall before the full update of a table, the indexes and re-create indexes to improve performance.

    Rather than a drop and recreate indexes, I wanted to know if there's another approach better to achieve performance gains.

    I thought make unusable index and rebuild later. Would it not be better to drop and re-create the index.

    Thanks for your time.

    >
    I thought make unusable index and rebuild later. Would it not be better to drop and re-create the index.
    >
    This is exactly the right strategy to use. He does need to get the benefit of the performance, and there is no danger of inadvertently re-create the index with the wrong settings or in the wrong table space.

    See understanding when to use unusable index or Invisible in the DBA Guide
    http://docs.Oracle.com/CD/E11882_01/server.112/e25494/indexes002.htm#CIHJIDJG
    >
    Unusable index

    An unusable index is ignored by the optimizer, and is not maintained by DML. One of the reasons to make an unusable index are to improve the performance of loading in bulk. (Loads in bulk, go faster if the database is not required to manage the index when inserting rows.) Instead of letting fall the index and later re-creation, requiring you to remember the exact parameters of the CREATE INDEX statement, you can make the index unusable and then rebuild.

  • After and before triggers

    My doubt is execution of triggers

    I have a table T1

    create table T1
    + (ID1 key primary number (9.2) +)
    NAME1 VARCHAR2 (100));

    It was after 2 rows.

    insert into t1 values (1, 'sandeep')
    insert into t1 values (2, 'tom')
    commit;

    I now have 4 triggers

    create or replace
    TRIGGER1_before_statement RELAXATION
    before the update on T1
    Start
    dbms_output.put_line ('tires before declaration');
    END;

    create or replace
    relaxation TRIGGER_BEFORE_EACHROW
    before the update on T1 for each line
    Start
    DBMS_OUTPUT. Put_line ('tires before each line');
    END;

    create or replace
    TRIGGER_after_eachrow RELAXATION
    after update ON T1
    FOR EACH LINE
    Start
    DBMS_OUTPUT. Put_line ("trigger shot after eachrow");
    END;


    create or replace
    relaxation TRIGGER1_AFTER_STATEMENT
    after update on T1
    Start
    dbms_output.put_line ('shot after statement');
    END;


    I ran the following script

    SET SERVEROUTPUT ON;
    Start
    Update T1 T1 set. Id1 = 1 where T1. ID1 = 2;
    end;

    This update statement fails because it violates the primary key on the table constraint.
    During execution of the update statement, I look only forward declaration and line triggers to fire because after triggers will be fired after the execution of the statement and in this case the execution of the update has failed.

    But the result I get is

    before the declaration
    before each line
    trigger pulled after eachrow

    which means the TRIGGER_after_eachrow after also shot but my update statement failed and TRIGGER_after_eachrow should fire after the update the lines.

    Why this trigger has been activated? If oracle treats all triggers even if the triggerig statement fails, so why TRIGGER1_AFTER_STATEMENT did not.

    Thanks in advance.

    We do not speak of can be deferred accordingly. We want to say that during the execution of the UPDATE, the constraint is not checked by rank
    but at the end of the statement.

    may be deferred as an attribute of the constraint (as you mentioned) means that the constraint is not checked at the end of the statement, but at the time of VALIDATION.

    Hope this cleared it up.

  • When to use it: old.value &amp;: new.value and when to use after and before in trigge

    Hi all

    I have a base table and a table of newspaper. Whenever I insert values in the base table can immediately update the table of the journal with some of the columns in the base table. To do this, I wrote the code. It looks like this:

    CREATE OR REPLACE
    Temp_log_track RELAXATION
    AFTER INSERT OR DELETE ON temp_list_cmpgn_hist_dtl
    FOR EACH LINE
    DECLARE
    v_partition_name varchar2 (20);
    v_num_records varchar2 (20);
    BEGIN
    v_partition_name: = to_char (: new .campaign_start_date, "YYYYMM");
    SELECT v_num_records FROM list_campaign WHERE program_id = num_records: new.program_id
    AND program_child_id =: new.program_child_id;
    IF the insertion
    INSERT INTO temp_list_cmpgn_bkup_log
    (campaign_start_date, load_date, program_child_id, program_id, partition_name, num_records)
    VALUES (: new .campaign_start_date,: new.load_date,: new.program_child_id,: new.program_id,)
    "list_cmpgn_" | (v_partition_name, v_num_records);
    DBMS_OUTPUT. PUT_LINE ('INSERTED');
    ON THE OTHER
    DELETE FROM temp_list_cmpgn_bkup_log
    WHERE program_child_id =: old.program_child_id / * AND campaign_start_date =: old.campaign_start_date AND load_date =: old.load_date
    AND program_id =: old.program_id
    AND nom_partition = 'list_cmpgn_ ' | v_partition_name AND num_records = v_num_records * /;
    END IF;
    EXCEPTION
    WHILE OTHERS THEN
    DBMS_OUTPUT. Put_line ('Error');
    END;

    (1.) I am able to insert values into the table of the journal whenever I insert values in the base table, but I'm not able to delete the values in the table of the newspaper whenever delete is performed on the base table.
    2.) when to use it: OLD.value and: NEW.value?
    (3.) when to use AFTER and when to use BEFORE?

    As sb90275, you should really use the actual dates, no strings, in your query. You can use the TO_DATE function to convert a date string, i.e.

    DELETE FROM table_name
     WHERE program_id = :1
       AND program_child_id = :2
       AND load_date = to_date( '30-NOV-84', 'DD-MON-RR' )
       AND campaign_start_date = to_date( '20-NOV-85', 'DD-MON-RR' )
    

    If you store data in LOAD_DATE or CAMPAIGN_DATE where the component "hour" is something else that at midnight, you would need to TRUNC (load_date) or TRUNC (campaign_start_date).

    If you look at the error stack, you'll see that the error is thrown to line 6 of your relaxation. Line 6 of your trigger is the statement

    SELECT num_records
      INTO v_num_records
      FROM list_campaign
     WHERE program_id = :new.program_id
       AND program_child_id = :new.program_child_id; 
    

    If you delete data, there is none: new.program_id or: new.program_child_id. Both values are NULL. This means that the SELECT statement retrieves no data, which means he raises an ORA-01403 error. I don't know why you do this query in the first place. You may delete it. Maybe you should do inside the INSERT IF statement. Maybe you need to change to select the COUNT (*) BOF the: old.program_id and: old.program_child_id if you are deleting lines.

    Justin

  • to delete and re-create indexes

    Hello.

    You get the following error reported for work seek to purge the CC:
    ORA-08102

    According to the note of the Oracle, he must drop and re-create the index FND_CONCURRENT_REQUEST_N1.

    Can someone please advise the best way to to do? Is there a standard way to do this? (Should we stop managers cc? Database? EBS together?) What are the commands?

    Thank you all.

    Oracle 10.2.0.4
    Windows 2008
    EBS 11.5.10.2

    DA

    1. Get FND_CONCURRENT_REQUEST_N1 DDL
    THE VALUE OF 10000 LONG
    SELECT dbms_metadata.get_ddl ('INDEX', 'FND_CONCURRENT_REQUEST_N1') FROM dual;

    (2) delete the index.
    DROP INDEX FND_CONCURRENT_REQUEST_N1

    3. run the DDL
    CREATE INDEXES FND_CONCURRENT_REQUEST_N1...

    Nothing else is necessary.

  • What are the after and before events revert document.

    Quickly after that a Document is returned

    Looks like it is described here https://helpx.adobe.com/indesign/using/recovery-undo.html

  • Analyze tables after creating indexes

    Hi all

    I created new clues on the production environment, we must analyze tables after creating indexes. Why and what analysis do?

    Thanks for the help.
    Select * from V$version;
    
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
    PL/SQL Release 10.2.0.4.0 - Production
    "CORE     10.2.0.4.0     Production"
    TNS for HPUX: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - Production

    There are so many different options and you'll certainly want to tweak your stats based on your system.
    The best thing to do is to read about dbms_stats:
    http://download.Oracle.com/docs/CD/B19306_01/server.102/b14211/stats.htm#PFGRF30102
    http://download.Oracle.com/docs/CD/B19306_01/AppDev.102/b14258/d_stats.htm#CIHEHDFB

    Here are a few examples to give you an idea of what they look like and how to perform:

    BEGIN
      DBMS_STATS.GATHER_TABLE_STATS(OWNNAME          => 'schema_name',
                                    TABNAME          => 'table_name',
                                    ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE, --> For really big tables oracle can just do a specific percent
                                    METHOD_OPT       => 'for all columns size 1', --> Defines Histograms, size one disables histograms
                                    DEGREE           => 12, --> The degree of parallelism so you'll see 12 parallel threads gathering stats
                                    CASCADE          => TRUE); --> gather stats on the table's indexes also
    END; 
    
    BEGIN
      DBMS_STATS.GATHER_INDEX_STATS(OWNNAME          => 'schema_name',
                                    INDNAME          => 'index_name',
                                    ESTIMATE_PERCENT => 50,
                                    DEGREE           => 4);
    END; 
    

    You can also do

    DBMS_STATS.gather_schema_stats
    DBMS_STATS.gather_database_stats

    and much more...

    I really want to focus on the need to do your homework on them,
    read the docs I linked and adjust your statistical parameters to fit your db objects and how they are accessed/used.
    Having accurate and meaningful statistics are very important to the performance of the database.

  • values based on the following logic 'values after the first values of two '_' and before last '_' values '.

    Hi all

    I need the values according to below 2logics in a single select query using instring and substring

    1 values based on the following logic 'values after the first values of two '_' and before last '_' values '.

    2 values based on the following logic 'values after the first values of two '_' and before last'-'values '.

    EXM:

    Entry: ABCD_EFGH_IJKLM - NOPQ_XYZ output: IJKLM - NOPQ

    Entry:. ABCD_EFGH_IJKLM - NOPQ output:IJKLM

    Thank you.

    Check the following

    WITH DATA1 AS

    (SELECT "ABCD_EFGH_IJKLM - NOPQ_XYZ" double val)

    UNION ALL

    SELECT 'ABCD_EFGH_IJKLM - NOPQ' double val

    )

    SELECT SUBSTR (VAL, INSTR(VAL,'_',1,2) + 1, DECODE (BIGGER (INSTR (VAL, '_',-1, 1), INSTR(VAL,'-',-1,1)), INSTR (VAL,'-', - 1, 1), LENGTH (VAL) + 1, INSTR (VAL, '_',-1, 1))-(INSTR (VAL, '_', 1, 2) + 1))

    OF DATA1;

    Concerning

    Salim

  • Problem to create Plan to explain and use XML indexes. Please follow scenario...

    Hello

    Oracle - Oracle Database 11 g Enterprise Edition Release 11.2.0.2.0 - 64 bit Version

    I was able to reproduce the error like below:

    Run the following code to Schema1:
    CREATE TABLE TNAME1
    (
       DB_ID            VARCHAR2 (10 BYTE),
       DATA_ID          VARCHAR2 (10 BYTE),
       DATA_ID2         VARCHAR2 (10 BYTE),
       IDENTIFIER1      NUMBER (19) NOT NULL,
       ID1              NUMBER (10) NOT NULL,
       STATUS1          NUMBER (10) NOT NULL,
       TIME_STAMP       NUMBER (19) NOT NULL,
       OBJECT_ID        VARCHAR2 (40 BYTE) NOT NULL,
       OBJECT_NAME      VARCHAR2 (80 BYTE) NOT NULL,
       UNIQUE_ID        VARCHAR2 (255 BYTE),
       DATA_LIVE        CHAR (1 BYTE) NOT NULL,
       XML_MESSAGE      SYS.XMLTYPE,
       ID2              VARCHAR2 (255 BYTE) NOT NULL,
       FLAG1            CHAR (1 BYTE) NOT NULL,
       KEY1             VARCHAR2 (255 BYTE),
       HEADER1          VARCHAR2 (2000 BYTE) NOT NULL,
       VERSION2         VARCHAR2 (255 BYTE) NOT NULL,
       TYPE1            VARCHAR2 (15 BYTE),
       TIMESTAMP1   TIMESTAMP (6),
       SOURCE_NUMBER    NUMBER
    )
    XMLTYPE XML_MESSAGE STORE AS BINARY XML 
    PARTITION BY RANGE (TIMESTAMP1)
       (PARTITION MAX
           VALUES LESS THAN (MAXVALUE)
           )
    NOCOMPRESS
    NOCACHE
    ENABLE ROW MOVEMENT
    /
    
    
    
    begin
    app_utils.drop_parameter('TNAME1_PAR');
    end;
    
    
    
    BEGIN
    DBMS_XMLINDEX.REGISTERPARAMETER(
    'TNAME1_PAR',
    'PATH TABLE     TNAME1_RP_PT
                              PATHS (INCLUDE (            /abc:Msg/product/productType
                                                                    /abc:Msg/Products/Owner
      ) 
                                     NAMESPACE MAPPING (     xmlns:abc="Abc:Set"
                                                       ))
    ');
    END;
    /
    
    
    
    CREATE INDEX Indx_XPATH_TNAME1
       ON "TNAME1" (XML_MESSAGE)
       INDEXTYPE IS XDB.XMLINDEX PARAMETERS ( 'PARAM TNAME1_PAR' )
    local;
    Then in Schema2, create
    create synonym TNAME1 FOR SCHEMA1.TNAME1
    SCHEMA1:
    GRant All on TNAME1 to SCHEMA2
    Now to SCHEMA2, if we try:
    Explain Plan for 
    SELECT xmltype.getclobval (XML_MESSAGE)
    FROM TNAME1 t
    WHERE XMLEXISTS (
    'declare namespace abc="Abc:Set";  /abc:Msg/product/productType= ("1", "2") '
    PASSING XML_MESSAGE);
    WE GET-> ORA-00942: table or view does not exist
    While this works:
    Explain Plan for 
    SELECT xmltype.getclobval (XML_MESSAGE)
    FROM TNAME1 t
    - Please tell me, what is the reason behind this and how can I overcome it. Originally all is my point of view based on this condition to fail in another schema, and not not to pick up the XMLIndexes.

    Also
     SELECT * from DBA_XML_TAB_COLS WHERE TABLE_NAME like 'TNAME1';
    Output is as:
    OWNER | TABLE_NAME | COLUMN_NAME | XMLSCHEMA. SCHEMA_OWNER | ELEMENT_NAME | STORAGE_TYPE | ANYSCHEMA | RUN
    SCHEMA1 | TNAME1 |     XML_MESSAGE |          ||          || BINARY | DON'T | YES |
    SCHEMA1 | TNAME1 |     SYS_NC00025$ |          ||          || CLOB |     ||

    -Can I change AnySchema to YES to NO for - column_name = XML_MESSAGE? Maybe that will solve my problem.
    -SYS_NC00025$ is the XML Index, why not get all the values for ANYSCHEMA, RUN on it. What is causing the problem.


    Please suggest... Thank you...

    The problem sounds familiar. Please create a SR on http://support.oracle.com for this one.

  • Creating indexes and a default tablespace

    Hi Experts,

    Need your help to understand a basic tablespace clause when creating any object.
    I have a table owned by the user and reside on tuberculosis tablspace, table A has two indices i1 and i2, index i1 A user-owned and created by error index i2 belonging to user B.
    index i1 resides on the tb_index tablespace, i2 index created by mistake lies also on same tablespace tb_index.
    I have a question above given the scenario

    I2 index that was created by mistake lies in tablespace tb_index, despite mentioning any tablespace clause. How it can be created on the tb_index tablespace when the developer did not mention the tablespace.
    tablespace tb_index is neither database tablspace default is default not storage for user B.

    No idea about this help me a lot.

    Thank you

    Maybe something like that happening?

    SQL> conn / as sysdba
    Connected.
    SQL> conn test/test
    Connected.
    SQL> select * from user_indexes;
    
    no rows selected
    
    SQL> select table_name, tablespace_name from user_tables;
    
    TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------
    TAB1                           USERS
    
    SQL> conn / as sysdba
    Connected.
    SQL> grant create any index to system;
    
    Grant succeeded.
    
    SQL> conn system/oracle
    ERROR:
    ORA-28002: the password will expire within 7 days
    
    Connected.
    SQL> conn test/test
    Connected.
    
    SQL> revoke index on tab1 from system;
    
    Revoke succeeded.
    
    SQL> conn system/oracle
    ERROR:
    ORA-28002: the password will expire within 7 days
    
    Connected.
    SQL> create index tidx on test.tab1(a);
    
    Index created.
    
    SQL> set pagesize 9999
    SQL> select index_name, table_name, tablespace_name, owner from all_indexes where table_name='TAB1'
      2  ;
    
    INDEX_NAME                     TABLE_NAME
    ------------------------------ ------------------------------
    TABLESPACE_NAME                OWNER
    ------------------------------ ------------------------------
    TIDX                           TAB1
    SYSTEM                         SYSTEM
    

    HTH
    Aman...

  • Drop and re-create the index on the current table

    Hello

    I just have a few questions about the removal and creating indexes on a table that activates a lot.

    Let me explain first:

    The table is used by the application with the DML statements every 3 seconds and I want to do is to drop the indexes and re-create them.
    But Im worried about the consequences - what happens when I try to recreate the indexes and the table has an option rowlock/used by the application?

    P.S
    It's production environment - so I can't stop the application.


    BR / Ander

    A reconstructed index either Online or Offline.

    Online index rebuild features:

    ALTER INDEX REBUILD ONLINE;

    LMD is allowed on the base table
    It's relatively slow
    Base table is targeted for the new index
    Base table is locked in shared mode and DOF is not possible
    Intermediate table stores changes to data in the base table, during the rebuilding of indexes to update the new index later

    Offline index rebuild features:

    ALTER INDEX REBUILD. (Default)
    Does not refer to the base of the table and the base table is exclusively locked
    New index is created from the old index
    Not possible DML and DDL on the base table
    Relatively faster

  • create indexes and internal error

    Hi, I run

    CREATE INDEX idx_nu_account_id_ ON archost
    (
    acc_id ASC
    )
    tablespace ts_idx
    /
    so happen "ORA-00600: internal error code, arguments: [ksuloget2], [0xFDD1F948], 'this message; '

    Also I during the exec select * archost then if record is going to get all the return even error why?

    What version of Oracle?
    What platform (OS)?

    I found two problem reports to Oracle on this error. The two refer to an LMS > 1 and are Windows specific. If you are under Windows see Oracle support documents: 564784.1 and 5935415.

    You can open a SR if the adjustment to see if there was a patch created. Otherwise, you can try using a smaller CMS framework.

    HTH - Mark D Powell.

  • creating index Impdp and parallel

    This can be a very basic question for most of you, but...

    Can someone explain that under with parallel impdp = n will lead to creating treats 1 index both with n PX (suppose I have n dump files)? Or it will create index n at the same time each process n PX? Issue DDL (1 parallel) parallel impdp = n option should not be indexed?

    How the result is different if I have only 1 file dump? Impdp will use n processes to read the dump file 1?

    I want to talk about 11 GR 2 EA.

    Indexes are created in series, but built using parallel slaves.

    Let's say you have foo index that was created like this

    create indexes on foo_tab foo (a) parallel 1;

    If you have run with parallel impdp = 5 Data Pump will do this:

    create indexes on foo_tab foo (a) parallel 5;
    ALTER index foo parallel 1

    Thus, the index will be created using parallel slaves until 5. When the build is finished, the parallel value is reset to the original value.

    Dean

  • Performance problem of creating index with LOB/CLOB content

    Hello

    I have a problem with indexing performance with a table containing columns of text
    also a clob and a lob column.

    Indexing with 20,000 lines takes about 1 hour on 11.2.0.4 with the last batch of patches 12 on
    win x 64.

    on a 11.2.0.1, the process is done in a few minutes.

    So what can I do to find out where is the problem?

    I use filter auto and basic lexer.
    Operating system is W 2008 R2 SP and latest patches. OS lang is English.
    DB is installed with AL32UTF8 and German and English language packs.

    also watched and ctx_user_index_errors and pending and there is no error or waiting in lines.
    After the index is created, everything works fine. during the creation of index no other user is connected to the database.

    so why 11.2.0.1 is so much faster than 11.2.0.4?
    some advice for me?

    Thank you!

    Hello

    so I solved all my problems.

    So I made two changes:

    1. I declared the variable theNotiz2 for recording the output for the raw text of the column NOTIZ (is a clob), add the output to the Out-Clob parameter

    2. I used the same variable for the--> this blob field caused an error with line with lob is not locked... so I said a second variable for this and that solved the problem.

    normally, I think it should work with 1 variable... but is an acceptable workaround.

    Performance now is OK because the procedure, I can set on which the documents I want to do a search or not.

    Second thing, but has nothing to do with Oracle: my frontend application makes a ZIP for each insert in a column lob and if the ctxhx does not index the content, the MDC, and before calling the conversion of plain text, so I have to make a decompression of the blob...

    so for now, all problems solved. Thank you for your support.

  • How to create indexes of service according to

    Hi all

    I already post a thread associated with this thread, but there is little difference in the two threads.

    I had a query as below:

    Select concept_Un, raw_concept_a, relation_name, concept_b, discovered_relations raw_concept_b, where lower (concept_a) like '% of consumers' and lower (concept_a) like '% confidence % ';


    This query taking too long to run and its high rating.

    cost and execution time: 1155K and 03:51:11

    I changed above query using the Forum gurus, below query is changed:


    Select concept_Un, raw_concept_a, relation_name, concept_b, raw_concept_b

    of discovered_relations

    where regexp_instr (concept_Un, ' (consumer.*confidence) |) ((confidence.*Consumer))', 1, 1, 1, 'i') > 0;

    I created indexes for query modified as well:
    creating index SIDEV. IDX_reg_instr on SIDEV. DISCOVERED_RELATIONS (REGEXP_INSTR ("CONCEPT_A",'(consumer.*confidence) |)) (confidence.*Consumer))', 1, 1, 1, 'i'));

    After that the cost and time to get request reduces to:
    After optimization: 40001 and 08:01

    Now the question is whenever my request will vary as a condition, this means that search string can be vary to any value.

    So I need a basic index as function above is the index which can work for any string in the like operator, now my created index only works very well for the fixed string...

    Thank you

    Abbas85 wrote:

    Hi Chris,

    Thank you very much its working well, now, to reduce the cost and duration of execution, I used below queries as you suggest:

    create index idx_fulltext on discovered_relations (concept_a) indextype is ctxsys.context;

    Select * from discovered_relations

    where contains (concept_a, 'Confidence') > 0 and contains (concept_a, 'Consumer') > 0;

    Hello

    No, you didn't.

    The query I used was

    Select str

    of test_idx

    where

    contains (str, '% of the CONSUMPTION and CONFIDENCE %') > 0

    If you read carefully, you'll notice that I used already found lowercase uppercase searchwords.

    This works because the oracle text case insensitiv default you can read documentation:

    "By default, all text tokens are converted to uppercase and then indexed. This

    results in case-insensitive queries. For example, separate queries for each of

    the three words, CAT cat,

    "and Cat all return the same documents.

    Indexing with Oracle Text

    If you have more to use tiny but need to start to read the oracle text docs ;-)

Maybe you are looking for