Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: Oracle 10g2 LIKE operator and case-insensitive issues
I have to review my test, there is something wrong, i've observed
strange behaviurs,
but lastli i've a test case.
I'm testing on 10.2.0.2 on Linux suse el x86 64 bit.
Connesso a:
Oracle Database 10g Release 10.2.0.2.0 - 64bit Production
SQL> drop index idxtestcase;
Indice eliminato.
SQL> CREATE INDEX IDXTESTCASE ON AUTENTI (AUTECOGNOME); Indice creato.
SQL> exec
dbms_stats.gather_table_stats(OWNNAME=>'GEOCALL',tabname=>'AUTENTI',CASCADE=>TRUE);
Procedura PL/SQL completata correttamente.
SQL> alter Session set nls_comp=linguistic;
Modificata sessione.
SQL> alter Session set nls_sort=binary_ci;
Modificata sessione.
SQL> alter session set optimizer_mode=first_rows_1;
Modificata sessione.
SQL> set autotrace on
SQL> SELECT AUTECOGNOME,ACTION FROM AUTENTI WHERE AUTECOGNOME LIKE
'cudiz%';
AUTECOGNOME
ACTION
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |00:00:01 |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 22 | 5 (0)| 00:00:01 | |* 1 | TABLE ACCESS FULL| AUTENTI | 1 | 22 | 5 (0)|
Predicate Information (identified by operation id):
1 - filter("AUTECOGNOME" LIKE 'cudiz%')
Statistiche
1 recursive calls 0 db block gets 16 consistent gets 0 physical reads 0 redo size 402 bytes sent via SQL*Net to client 338 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
SQL> alter session set optimizer_mode=all_rows;
Modificata sessione.
SQL> SELECT AUTECOGNOME,ACTION FROM AUTENTI WHERE AUTECOGNOME LIKE 'cudiz%';
AUTECOGNOME
ACTION
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |00:00:01 |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 22 | 5 (0)| 00:00:01 | |* 1 | TABLE ACCESS FULL| AUTENTI | 1 | 22 | 5 (0)|
Predicate Information (identified by operation id):
1 - filter("AUTECOGNOME" LIKE 'cudiz%')
Statistiche
1 recursive calls 0 db block gets 16 consistent gets 0 physical reads 0 redo size 402 bytes sent via SQL*Net to client 338 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
SQL> SELECT /*+ INDEX(A IDXTESTCASE) */ AUTECOGNOME,ACTION FROM
AUTENTI A WHERE AUTECOGNOME LIKE 'cu
diz%';
AUTECOGNOME
ACTION
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 22 | 5 (0)|
| 1 | TABLE ACCESS BY INDEX ROWID| AUTENTI | 1 | 22 | 5 (0)|
|* 2 | INDEX FULL SCAN | IDXTESTCASE | 1 | | 3 (0)|
Predicate Information (identified by operation id):
2 - filter("AUTECOGNOME" LIKE 'cudiz%')
Statistiche
1 recursive calls 0 db block gets 5 consistent gets 0 physical reads 0 redo size 402 bytes sent via SQL*Net to client 338 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
SQL> alter session set optimizer_mode=first_rows;
Modificata sessione.
SQL> SELECT AUTECOGNOME,ACTION FROM AUTENTI WHERE AUTECOGNOME LIKE 'cudiz%';
AUTECOGNOME
ACTION
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |00:00:01 |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 22 | 5 (0)| 00:00:01 | |* 1 | TABLE ACCESS FULL| AUTENTI | 1 | 22 | 5 (0)|
Predicate Information (identified by operation id):
1 - filter("AUTECOGNOME" LIKE 'cudiz%')
Statistiche
0 recursive calls 0 db block gets 16 consistent gets 0 physical reads 0 redo size 402 bytes sent via SQL*Net to client 338 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
Probably i didn't notice when i first made my test that Oracle makes
an INDEX FULL SCAN
so my suggestions were not correct. It make searches case insensitve
but it seems not able to
use the normal indexes.
So i remand on asktom.oracle.com and his suggestions
Bye
Cristian Cudizio
http://oracledb.wordpress.com
http://cristiancudizio.wordpress.com
Received on Fri May 11 2007 - 05:48:48 CDT
![]() |
![]() |