Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DROP TABLE t1 cascade constraints purge;
- CREATE TABLE t1 (
- id INT,
- usr_name varchar2(30) NOT NULL,
- pad varchar2(2000) DEFAULT lpad('x', 2000, 'x') NOT NULL,
- CONSTRAINT t1_pk PRIMARY KEY (id)
- );
- EXEC dbms_random.seed(0);
- INSERT INTO t1 (id, usr_name)
- SELECT
- rownum,
- dbms_random.string('a', 15)
- FROM
- dual
- CONNECT BY level <= 10000
- ;
- CREATE INDEX t1_indx ON t1(id, UPPER(usr_name));
- --create index t1_indx on t1(upper(usr_name));
- EXEC dbms_stats.gather_table_stats(NULL, 't1', method_opt=>'for all columns size 1')
- EXPLAIN plan FOR SELECT * FROM t1 WHERE id BETWEEN :1 AND :2 AND usr_name = :1;
- SELECT * FROM TABLE(dbms_xplan.display);
- /*
- explain plan for select * from t1 where usr_name = :1;
- select * from table(dbms_xplan.display);
- explain plan for select * from t1 where usr_name = upper(:1);
- select * from table(dbms_xplan.display);
- explain plan for select * from t1 where upper(usr_name) = :1;
- select * from table(dbms_xplan.display);
- */
- /*
- Plan hash value: 3418820351
- ----------------------------------------------------------------------------------------------
- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
- ----------------------------------------------------------------------------------------------
- | 0 | SELECT STATEMENT | | 1 | 2021 | 18 (0)| 00:00:01 |
- |* 1 | FILTER | | | | | |
- |* 2 | TABLE ACCESS BY INDEX ROWID BATCHED| T1 | 1 | 2021 | 18 (0)| 00:00:01 |
- |* 3 | INDEX RANGE SCAN | T1_PK | 45 | | 2 (0)| 00:00:01 |
- ----------------------------------------------------------------------------------------------
- Predicate Information (identified by operation id):
- ---------------------------------------------------
- 1 - filter(TO_NUMBER(:2)>=TO_NUMBER(:1))
- 2 - filter("USR_NAME"=:1)
- 3 - access("ID">=TO_NUMBER(:1) AND "ID"<=TO_NUMBER(:2))
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement