By default, Oracle Text uses the cost-based optimizer (CBO) to determine the best execution plan for a query.
To enable the optimizer to better estimate costs, you can calculate the statistics on the table you query as follows:
ANALYZE TABLE <table_name> COMPUTE STATISTICS;
Alternatively, you can estimate the statistics on a sample of the table as follows:
ANALYZE TABLE <table_name> ESTIMATE STATISTICS 1000 ROWS;
or
ANALYZE TABLE <table_name> ESTIMATE STATISTICS 50 PERCENT;
You can also collect statistics in parallel with the DBMS_STATS.GATHER_TABLE_STATS procedure:
begin
 
DBMS_STATS.GATHER_TABLE_STATS('owner', 'table_name',
                                       estimate_percent=>50,
                                       block_sample=>TRUE,
                                       degree=>4) ;
 
end  ;
These statements collect statistics on all the objects associated with table_name, including the table columns and any indexes (b-tree, bitmap, or Text domain) associated with the table.
To re-collect the statistics on a table, enter the ANALYZE statement as many times as necessary or use the DBMS_STATS package.
By collecting statistics on the Text domain index, the cost-based optimizer in Oracle Database is able to perform the following tasks:
Estimate the selectivity of the CONTAINS predicate
Estimate the I/O and CPU costs of using the Text index, that is, the cost of processing the CONTAINS predicate using the domain index
Estimate the I/O and CPU costs of each invocation of CONTAINS
Knowing the selectivity of a CONTAINS predicate is useful for queries that contain more than one predicate, such as in structured queries. This way the cost-based optimizer can better decide whether to use the domain index to evaluate CONTAINS or to apply the CONTAINS predicate as a post filter.
Oracle Database SQL Language Reference for more information about the ANALYZE statement
Oracle Database PL/SQL Packages and Types Reference for information about DBMS_STATS package