[14] 번

SQL> create table 도서

2  as

3  select rownum 도서번호

4       , '오라클 ' || dbms_random.string('u', 8) 도서명

5       , round(dbms_random.value(1000, 100000), -3) 가격

6       , dbms_random.string('l', 10) 저자

7       , dbms_random.string('u', 10) 출판사

8       , lpad(mod(rownum, 10), 4, '0') || dbms_random.string('l', 4) ISBN

9  from   dual

10  connect by level <= 99989

11  ;

테이블이 생성되었습니다.

SQL>

SQL> insert into 도서

2  select 99990 도서번호

3       , '오라클 성능 고도화 원리와 해법 01' 도서명

4       , round(dbms_random.value(1000, 100000), -3) 가격

5       , dbms_random.string('l', 10) 저자

6       , dbms_random.string('u', 10) 출판사

7       , lpad(mod(rownum, 10), 4, '0') || dbms_random.string('l', 4) ISBN

8  from   dual

9  ;

1 개의 행이 만들어졌습니다.

Execution Plan

----------------------------------------------------------

------------------------------------------------------

| Id  | Operation        | Name | Rows  | Cost (%CPU)|

------------------------------------------------------

|   0 | INSERT STATEMENT |      |     1 |     2   (0)|

|   1 |  COUNT           |      |       |            |

|   2 |   FAST DUAL      |      |     1 |     2   (0)|

------------------------------------------------------

Note

-----

- 'PLAN_TABLE' is old version

Statistics

----------------------------------------------------------

126  recursive calls

30  db block gets

18  consistent gets

0  physical reads

0  redo size

696  bytes sent via SQL*Net to client

852  bytes received via SQL*Net from client

4  SQL*Net roundtrips to/from client

2  sorts (memory)

0  sorts (disk)

1  rows processed

SQL>

SQL> insert into 도서

2  select 99990+rownum 도서번호

3       , '오라클 성능 고도화 원리와 해법 ' || lpad(rownum, 2, '0') 도서명

4       , round(dbms_random.value(1000, 100000), -3) 가격

5       , dbms_random.string('l', 10) 저자

6       , dbms_random.string('u', 10) 출판사

7       , lpad(mod(rownum, 10), 4, '0') || dbms_random.string('l', 4) ISBN

8  from   dual

9  connect by level <= 10

10  ;

10 개의 행이 만들어졌습니다.

Execution Plan

----------------------------------------------------------

-------------------------------------------------------------------

| Id  | Operation                     | Name | Rows  | Cost (%CPU)|

-------------------------------------------------------------------

|   0 | INSERT STATEMENT              |      |     1 |     2   (0)|

|   1 |  COUNT                        |      |       |            |

|   2 |   CONNECT BY WITHOUT FILTERING|      |       |            |

|   3 |    FAST DUAL                  |      |     1 |     2   (0)|

-------------------------------------------------------------------

Note

-----

- 'PLAN_TABLE' is old version

Statistics

----------------------------------------------------------

1  recursive calls

12  db block gets

1  consistent gets

0  physical reads

3244  redo size

696  bytes sent via SQL*Net to client

905  bytes received via SQL*Net from client

4  SQL*Net roundtrips to/from client

2  sorts (memory)

0  sorts (disk)

10  rows processed

SQL>

SQL> create index 도시명_idx on 도서(도서명);

인덱스가 생성되었습니다.

SQL> exec dbms_stats.gather_table_stats(user, '도서', no_invalidate=>false);

PL/SQL 처리가 정상적으로 완료되었습니다.

SQL>

SQL> column last_book_nm new_value last_book_nm;

SQL> column last_rid  new_value    last_rid;

SQL>

SQL> select *

2  from(

3    select 도서명 last_book_nm, rowid last_rid from 도서

4    order by 도서명 desc, rowid desc

5  )

6  where rownum <= 11

7  ;

LAST_BOOK_NM

------------------------------------------------------------------------------

LAST_RID

------------------

오라클 성능 고도화 원리와 해법 10

AAAPVOAAEAAAlQAAAK

오라클 성능 고도화 원리와 해법 09

AAAPVOAAEAAAlQAAAJ

오라클 성능 고도화 원리와 해법 08

AAAPVOAAEAAAlQAAAI

LAST_BOOK_NM

------------------------------------------------------------------------------

LAST_RID

------------------

오라클 성능 고도화 원리와 해법 07

AAAPVOAAEAAAlQAAAH

오라클 성능 고도화 원리와 해법 06

AAAPVOAAEAAAlQAAAG

오라클 성능 고도화 원리와 해법 05

AAAPVOAAEAAAlQAAAF

LAST_BOOK_NM

------------------------------------------------------------------------------

LAST_RID

------------------

오라클 성능 고도화 원리와 해법 04

AAAPVOAAEAAAlQAAAE

오라클 성능 고도화 원리와 해법 03

AAAPVOAAEAAAlQAAAD

오라클 성능 고도화 원리와 해법 02

AAAPVOAAEAAAlQAAAC

LAST_BOOK_NM

------------------------------------------------------------------------------

LAST_RID

------------------

오라클 성능 고도화 원리와 해법 01

AAAPVOAAEAAAlQAAAB

오라클 성능 고도화 원리와 해법 01

AAAPVOAAEAAAlQAAAA

11 개의 행이 선택되었습니다.

Execution Plan

----------------------------------------------------------

---------------------------------------------------------------------

| Id  | Operation               | Name | Rows  | Bytes | Cost (%CPU)|

---------------------------------------------------------------------

|   0 | SELECT STATEMENT        |      |    11 | 22154 |   230   (3)|

|*  1 |  COUNT STOPKEY          |      |       |       |            |

|   2 |   VIEW                  |      |   100K|   192M|   230   (3)|

|*  3 |    SORT ORDER BY STOPKEY|      |   100K|  2734K|   230   (3)|

|   4 |     TABLE ACCESS FULL   | 도서 |   100K|  2734K|   230   (3)|

---------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter(ROWNUM<=11)

3 - filter(ROWNUM<=11)

Note

-----

- 'PLAN_TABLE' is old version

Statistics

----------------------------------------------------------

1  recursive calls

0  db block gets

866  consistent gets

0  physical reads

0  redo size

1091  bytes sent via SQL*Net to client

385  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

1  sorts (memory)

0  sorts (disk)

11  rows processed

SQL>

SQL>

SQL> variable book_nm varchar2(100);

SQL> variable last_book_nm varchar2(100);

SQL> variable last_rid varchar2(20);

SQL>

SQL> begin

2    :book_nm := '오라클';

3    :last_book_nm := '&last_book_nm';

4    :last_rid := '&last_rid';

5  end;

6  /

구   3:   :last_book_nm := '&last_book_nm';

신   3:   :last_book_nm := '오라클 성능 고도화 원리와 해법 01';

구   4:   :last_rid := '&last_rid';

신   4:   :last_rid := 'AAAPVOAAEAAAlQAAAA';

PL/SQL 처리가 정상적으로 완료되었습니다.

SQL>

SQL> print :last_book_nm;

LAST_BOOK_NM

--------------------------------------------------------------------------------

오라클 성능 고도화 원리와 해법 01

SQL> print :last_rid;

LAST_RID

--------------------------------

AAAPVOAAEAAAlQAAAA

SQL>

SQL> select *

2  from (

3    select rownum rnum, 도서번호, 도서명, 가격, 저자, 출판사, isbn

4    from (

5      select 도서번호, 도서명, 가격, 저자, 출판사, isbn

6      from   도서

7      where  도서명 like :book_nm || '%'

8      order by 도서명

9    )

10    where rownum <= 100

11  )

12  where rnum >= 91  --> 10 페이지만 출력

13  ;

RNUM   도서번호 도서명                                         가격

---------- ---------- ---------------------------------------- ----------

저자       출판사     ISBN

---------- ---------- ----------

91      52187 오라클 AAQFBCRH                               45000

cjuyntxpqg SFDENJIUHV 0007ysod

92      90440 오라클 AAQGTGUN                               80000

vqgopafqbo RJGMGNPUKA 0000loxv

93      10846 오라클 AAQKXGSX                               10000

grjenhbmni EVHRJNOUJZ 0006muhc

RNUM   도서번호 도서명                                         가격

---------- ---------- ---------------------------------------- ----------

저자       출판사     ISBN

---------- ---------- ----------

94      79156 오라클 AAQMVIGW                               25000

owkyunnxxi PUGFUCSCMV 0006aynk

95      38161 오라클 AAQMWZOR                               23000

ufpxyhoehu ECDMYWEMUJ 0001vdgw

96      45052 오라클 AAQNOALA                               58000

tybplirzck ZOKMQHVLLK 0002ewhr

RNUM   도서번호 도서명                                         가격

---------- ---------- ---------------------------------------- ----------

저자       출판사     ISBN

---------- ---------- ----------

97       1505 오라클 AARBPKGP                               17000

ajyzixrvdc GPTKOZDHUG 0005ijbx

98      65331 오라클 AARIJTEK                               94000

slopyxyysb JDVZKYVNDH 0001qakj

99      58173 오라클 AARSQWLQ                               49000

dfthoivlhs RTMFVZEHID 0003hdmn

RNUM   도서번호 도서명                                         가격

---------- ---------- ---------------------------------------- ----------

저자       출판사     ISBN

---------- ---------- ----------

100      45266 오라클 AARSYNGP                               75000

fxdzlfzwvy PDTTZPHIXL 0006xlcs

10 개의 행이 선택되었습니다.

Execution Plan

----------------------------------------------------------

-------------------------------------------------------------------------------

| Id  | Operation                      | Name    | Rows  | Bytes | Cost (%CPU)|

-------------------------------------------------------------------------------

|   0 | SELECT STATEMENT               |         |   100 |   785K|    20   (0)|

|*  1 |  VIEW                          |         |   100 |   785K|    20   (0)|

|*  2 |   COUNT STOPKEY                |         |       |       |            |

|   3 |    VIEW                        |         |   100 |   784K|    20   (0)|

|   4 |     TABLE ACCESS BY INDEX ROWID| 도서    |   100 |  5500 |    20   (0)|

|*  5 |      INDEX RANGE SCAN          | 도시명_I|       |       |     2   (0)|

-------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter("RNUM">=91)

2 - filter(ROWNUM<=100)

5 - access("도서명" LIKE :BOOK_NM||'%')

filter("도서명" LIKE :BOOK_NM||'%')

Note

-----

- 'PLAN_TABLE' is old version

Statistics

----------------------------------------------------------

1  recursive calls

0  db block gets

103  consistent gets

0  physical reads

0  redo size

1412  bytes sent via SQL*Net to client

385  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

10  rows processed

SQL>

SQL> column 저자 format a10;

SQL> column 출판사 format a10;

SQL> column isbn format a10;

SQL> column 도서명 format a40;

SQL>

SQL> select *

2  from (

3      select /*+ index(도서 도시명_idx) */

4             rowid rid, 도서번호, 도서명, 가격, 저자, 출판사, isbn

5      from   도서

6      where  도서명 like :book_nm || '%'

7      and    도서명 = :last_book_nm    -- 이전 페이지에서 출력된 마지막 도서명

8      and    rowid  > :last_rid        -- 이전 페이지에서 출력된 마지막 도서의 rowid

9      union all

10      select /*+ index(도서 도시명_idx) */

11             rowid rid, 도서번호, 도서명, 가격, 저자, 출판사, isbn

12      from   도서

13      where  도서명 like :book_nm || '%'

14      and    도서명 > :last_book_nm    -- 이전 페이지에서 출력된 마지막 도서명

15  )

16  where   rownum <= 10

17  ;

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAB      99991 오라클 성능 고도화 원리와 해법 01

80000 ihlpoqlwrj BVRMIZCLIR 0001afxj

AAAPVOAAEAAAlQAAAC      99992 오라클 성능 고도화 원리와 해법 02

39000 oddsmiihlu KVSYHIXTOX 0002kzxn

AAAPVOAAEAAAlQAAAD      99993 오라클 성능 고도화 원리와 해법 03

4000 iiereswotg DTEZUWGMEH 0003gljc

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAE      99994 오라클 성능 고도화 원리와 해법 04

23000 xpwhxplmxd MADZOQYLDG 0004dtab

AAAPVOAAEAAAlQAAAF      99995 오라클 성능 고도화 원리와 해법 05

9000 rfjwdoguom PLAGDHGFCU 0005kxlq

AAAPVOAAEAAAlQAAAG      99996 오라클 성능 고도화 원리와 해법 06

45000 nodcgzhcrt SASRSZQPZU 0006ufsj

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAH      99997 오라클 성능 고도화 원리와 해법 07

37000 xexmsdtyaf VGBQDJEAYU 0007zfws

AAAPVOAAEAAAlQAAAI      99998 오라클 성능 고도화 원리와 해법 08

77000 erqjvwmiat SKVPTYVYSI 0008czta

AAAPVOAAEAAAlQAAAJ      99999 오라클 성능 고도화 원리와 해법 09

73000 oexfbrjpcb YPKIGOZLMT 0009dcvx

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAK     100000 오라클 성능 고도화 원리와 해법 10

51000 iivmuxgugb YERPVUJLAC 0000ejye

10 개의 행이 선택되었습니다.

Execution Plan

----------------------------------------------------------

--------------------------------------------------------------------------------

| Id  | Operation                       | Name    | Rows  | Bytes | Cost (%CPU)|

--------------------------------------------------------------------------------

|   0 | SELECT STATEMENT                |         |    10 | 80460 |     6   (0)|

|*  1 |  COUNT STOPKEY                  |         |       |       |            |

|   2 |   VIEW                          |         |    12 | 96552 |     6   (0)|

|   3 |    UNION-ALL                    |         |       |       |            |

|*  4 |     FILTER                      |         |       |       |            |

|   5 |      TABLE ACCESS BY INDEX ROWID| 도서    |     1 |    55 |     2   (0)|

|*  6 |       INDEX RANGE SCAN          | 도시명_I|     1 |       |     1   (0)|

|   7 |     TABLE ACCESS BY INDEX ROWID | 도서    |    11 |   605 |     4   (0)|

|*  8 |      INDEX RANGE SCAN           | 도시명_I|    45 |       |     2   (0)|

--------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter(ROWNUM<=10)

4 - filter(:LAST_BOOK_NM LIKE :BOOK_NM||'%')

6 - access("도서명"=:LAST_BOOK_NM)

filter("도서명" LIKE :BOOK_NM||'%' AND ROWID>CHARTOROWID(:LAST_RID))

8 - access("도서명" LIKE :BOOK_NM||'%')

filter("도서명">:LAST_BOOK_NM AND "도서명" LIKE :BOOK_NM||'%')

Note

-----

- 'PLAN_TABLE' is old version

Statistics

----------------------------------------------------------

1  recursive calls

0  db block gets

382  consistent gets

0  physical reads

0  redo size

1729  bytes sent via SQL*Net to client

385  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

10  rows processed

SQL>

SQL> select *

2  from (

3      select /*+ index(도서 도시명_idx) */

4             rowid rid, 도서번호, 도서명, 가격, 저자, 출판사, isbn

5      from   도서

6      where  도서명 like :book_nm || '%'

7      and    도서명 = :last_book_nm    -- 이전 페이지에서 출력된 마지막 도서명

8      and    rowid  > :last_rid        -- 이전 페이지에서 출력된 마지막 도서의 rowid

9      union all

10      select /*+ index(도서 도시명_idx) */

11             rowid rid, 도서번호, 도서명, 가격, 저자, 출판사, isbn

12      from   도서

13      where  rtrim(도서명) like :book_nm || '%'

14      and    도서명 > :last_book_nm    -- 이전 페이지에서 출력된 마지막 도서명

15  )

16  where   rownum <= 10

17  ;

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAB      99991 오라클 성능 고도화 원리와 해법 01

80000 ihlpoqlwrj BVRMIZCLIR 0001afxj

AAAPVOAAEAAAlQAAAC      99992 오라클 성능 고도화 원리와 해법 02

39000 oddsmiihlu KVSYHIXTOX 0002kzxn

AAAPVOAAEAAAlQAAAD      99993 오라클 성능 고도화 원리와 해법 03

4000 iiereswotg DTEZUWGMEH 0003gljc

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAE      99994 오라클 성능 고도화 원리와 해법 04

23000 xpwhxplmxd MADZOQYLDG 0004dtab

AAAPVOAAEAAAlQAAAF      99995 오라클 성능 고도화 원리와 해법 05

9000 rfjwdoguom PLAGDHGFCU 0005kxlq

AAAPVOAAEAAAlQAAAG      99996 오라클 성능 고도화 원리와 해법 06

45000 nodcgzhcrt SASRSZQPZU 0006ufsj

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAH      99997 오라클 성능 고도화 원리와 해법 07

37000 xexmsdtyaf VGBQDJEAYU 0007zfws

AAAPVOAAEAAAlQAAAI      99998 오라클 성능 고도화 원리와 해법 08

77000 erqjvwmiat SKVPTYVYSI 0008czta

AAAPVOAAEAAAlQAAAJ      99999 오라클 성능 고도화 원리와 해법 09

73000 oexfbrjpcb YPKIGOZLMT 0009dcvx

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAK     100000 오라클 성능 고도화 원리와 해법 10

51000 iivmuxgugb YERPVUJLAC 0000ejye

10 개의 행이 선택되었습니다.

Execution Plan

----------------------------------------------------------

--------------------------------------------------------------------------------

| Id  | Operation                       | Name    | Rows  | Bytes | Cost (%CPU)|

--------------------------------------------------------------------------------

|   0 | SELECT STATEMENT                |         |    10 | 80460 |     6   (0)|

|*  1 |  COUNT STOPKEY                  |         |       |       |            |

|   2 |   VIEW                          |         |    12 | 96552 |     6   (0)|

|   3 |    UNION-ALL                    |         |       |       |            |

|*  4 |     FILTER                      |         |       |       |            |

|   5 |      TABLE ACCESS BY INDEX ROWID| 도서    |     1 |    55 |     2   (0)|

|*  6 |       INDEX RANGE SCAN          | 도시명_I|     1 |       |     1   (0)|

|   7 |     TABLE ACCESS BY INDEX ROWID | 도서    |    11 |   605 |     4   (0)|

|*  8 |      INDEX RANGE SCAN           | 도시명_I|    45 |       |     2   (0)|

--------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter(ROWNUM<=10)

4 - filter(:LAST_BOOK_NM LIKE :BOOK_NM||'%')

6 - access("도서명"=:LAST_BOOK_NM)

filter("도서명" LIKE :BOOK_NM||'%' AND ROWID>CHARTOROWID(:LAST_RID))

8 - access("도서명">:LAST_BOOK_NM)

filter(RTRIM("도서명") LIKE :BOOK_NM||'%')

Note

-----

- 'PLAN_TABLE' is old version

Statistics

----------------------------------------------------------

1  recursive calls

0  db block gets

7  consistent gets

0  physical reads

0  redo size

1729  bytes sent via SQL*Net to client

385  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

10  rows processed

SQL>

SQL> select /*+ index(도서 도시명_idx) use_concat ordered_predicates */

2         rowid rid, 도서번호, 도서명, 가격, 저자, 출판사, isbn

3  from   도서

4  where  도서명 like :book_nm || '%'

5  and  ((도서명 > :last_book_nm)

6         or

7        (도서명 = :last_book_nm and rowid > :last_rid) )

8  and    rownum <= 10

9  ;

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAB      99991 오라클 성능 고도화 원리와 해법 01

80000 ihlpoqlwrj BVRMIZCLIR 0001afxj

AAAPVOAAEAAAlQAAAC      99992 오라클 성능 고도화 원리와 해법 02

39000 oddsmiihlu KVSYHIXTOX 0002kzxn

AAAPVOAAEAAAlQAAAD      99993 오라클 성능 고도화 원리와 해법 03

4000 iiereswotg DTEZUWGMEH 0003gljc

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAE      99994 오라클 성능 고도화 원리와 해법 04

23000 xpwhxplmxd MADZOQYLDG 0004dtab

AAAPVOAAEAAAlQAAAF      99995 오라클 성능 고도화 원리와 해법 05

9000 rfjwdoguom PLAGDHGFCU 0005kxlq

AAAPVOAAEAAAlQAAAG      99996 오라클 성능 고도화 원리와 해법 06

45000 nodcgzhcrt SASRSZQPZU 0006ufsj

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAH      99997 오라클 성능 고도화 원리와 해법 07

37000 xexmsdtyaf VGBQDJEAYU 0007zfws

AAAPVOAAEAAAlQAAAI      99998 오라클 성능 고도화 원리와 해법 08

77000 erqjvwmiat SKVPTYVYSI 0008czta

AAAPVOAAEAAAlQAAAJ      99999 오라클 성능 고도화 원리와 해법 09

73000 oexfbrjpcb YPKIGOZLMT 0009dcvx

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAK     100000 오라클 성능 고도화 원리와 해법 10

51000 iivmuxgugb YERPVUJLAC 0000ejye

10 개의 행이 선택되었습니다.

Execution Plan

----------------------------------------------------------

-------------------------------------------------------------------------------

| Id  | Operation                      | Name    | Rows  | Bytes | Cost (%CPU)|

-------------------------------------------------------------------------------

|   0 | SELECT STATEMENT               |         |    11 |   605 |    22   (0)|

|*  1 |  COUNT STOPKEY                 |         |       |       |            |

|   2 |   CONCATENATION                |         |       |       |            |

|*  3 |    FILTER                      |         |       |       |            |

|   4 |     TABLE ACCESS BY INDEX ROWID| 도서    |     1 |    55 |     2   (0)|

|*  5 |      INDEX RANGE SCAN          | 도시명_I|     1 |       |     1   (0)|

|*  6 |    FILTER                      |         |       |       |            |

|*  7 |     TABLE ACCESS BY INDEX ROWID| 도서    |    10 |   550 |    20   (0)|

|*  8 |      INDEX RANGE SCAN          | 도시명_I|   450 |       |     2   (0)|

-------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter(ROWNUM<=10)

3 - filter(ROWNUM<=10)

5 - access("도서명"=:LAST_BOOK_NM)

filter("도서명" LIKE :BOOK_NM||'%' AND ROWID>CHARTOROWID(:LAST_RID))

6 - filter(ROWNUM<=10)

7 - filter(LNNVL("도서명"=:LAST_BOOK_NM) OR

LNNVL(ROWID>CHARTOROWID(:LAST_RID)))

8 - access("도서명">:LAST_BOOK_NM AND "도서명" LIKE :BOOK_NM||'%')

filter("도서명" LIKE :BOOK_NM||'%')

Note

-----

- 'PLAN_TABLE' is old version

Statistics

----------------------------------------------------------

1  recursive calls

0  db block gets

7  consistent gets

0  physical reads

0  redo size

1729  bytes sent via SQL*Net to client

385  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

10  rows processed

SQL>

SQL> select /*+ index(도서 도시명_idx) */

2         rowid rid, 도서번호, 도서명, 가격, 저자, 출판사, isbn

3  from   도서

4  where  도서명 like :book_nm || '%'

5  and    도서명 >= :last_book_nm

6  and    lpad(도서명, 50) || rowid > lpad(:last_book_nm, 50) || :last_rid

7  and    rownum <= 10

8  ;

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAB      99991 오라클 성능 고도화 원리와 해법 01

80000 ihlpoqlwrj BVRMIZCLIR 0001afxj

AAAPVOAAEAAAlQAAAC      99992 오라클 성능 고도화 원리와 해법 02

39000 oddsmiihlu KVSYHIXTOX 0002kzxn

AAAPVOAAEAAAlQAAAD      99993 오라클 성능 고도화 원리와 해법 03

4000 iiereswotg DTEZUWGMEH 0003gljc

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAE      99994 오라클 성능 고도화 원리와 해법 04

23000 xpwhxplmxd MADZOQYLDG 0004dtab

AAAPVOAAEAAAlQAAAF      99995 오라클 성능 고도화 원리와 해법 05

9000 rfjwdoguom PLAGDHGFCU 0005kxlq

AAAPVOAAEAAAlQAAAG      99996 오라클 성능 고도화 원리와 해법 06

45000 nodcgzhcrt SASRSZQPZU 0006ufsj

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAH      99997 오라클 성능 고도화 원리와 해법 07

37000 xexmsdtyaf VGBQDJEAYU 0007zfws

AAAPVOAAEAAAlQAAAI      99998 오라클 성능 고도화 원리와 해법 08

77000 erqjvwmiat SKVPTYVYSI 0008czta

AAAPVOAAEAAAlQAAAJ      99999 오라클 성능 고도화 원리와 해법 09

73000 oexfbrjpcb YPKIGOZLMT 0009dcvx

RID                  도서번호 도서명

------------------ ---------- ----------------------------------------

가격 저자       출판사     ISBN

---------- ---------- ---------- ----------

AAAPVOAAEAAAlQAAAK     100000 오라클 성능 고도화 원리와 해법 10

51000 iivmuxgugb YERPVUJLAC 0000ejye

10 개의 행이 선택되었습니다.

Execution Plan

----------------------------------------------------------

-----------------------------------------------------------------------------

| Id  | Operation                    | Name    | Rows  | Bytes | Cost (%CPU)|

-----------------------------------------------------------------------------

|   0 | SELECT STATEMENT             |         |    10 |   550 |     6   (0)|

|*  1 |  COUNT STOPKEY               |         |       |       |            |

|   2 |   TABLE ACCESS BY INDEX ROWID| 도서    |    10 |   550 |     6   (0)|

|*  3 |    INDEX RANGE SCAN          | 도시명_I|     2 |       |     4   (0)|

-----------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter(ROWNUM<=10)

3 - access("도서명" LIKE :BOOK_NM||'%')

filter("도서명">=:LAST_BOOK_NM AND "도서명" LIKE :BOOK_NM||'%' AND

LPAD("도서명",50)||ROWIDTOCHAR(ROWID)>LPAD(:LAST_BOOK_NM,50)||:LAS

T_RID)

Note

-----

- 'PLAN_TABLE' is old version

Statistics

----------------------------------------------------------

1  recursive calls

0  db block gets

380  consistent gets

0  physical reads

0  redo size

1729  bytes sent via SQL*Net to client

385  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

10  rows processed

SQL>

SQL> select greatest('AAAH+WAAJAAAHxTAA9', 'AAAH+WAAJAAAHxTAA+') from dual;

GREATEST('AAAH+WAA

------------------

AAAH+WAAJAAAHxTAA9

Execution Plan

----------------------------------------------------------

------------------------------------------------------

| Id  | Operation        | Name | Rows  | Cost (%CPU)|

------------------------------------------------------

|   0 | SELECT STATEMENT |      |     1 |     2   (0)|

|   1 |  FAST DUAL       |      |     1 |     2   (0)|

------------------------------------------------------

Note

-----

- 'PLAN_TABLE' is old version

Statistics

----------------------------------------------------------

0  recursive calls

0  db block gets

0  consistent gets

0  physical reads

0  redo size

483  bytes sent via SQL*Net to client

385  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

1  rows processed

SQL>

SQL> select greatest( chartorowid('AAAH+WAAJAAAHxTAA9')

2                 , chartorowid('AAAH+WAAJAAAHxTAA+') ) from dual;

GREATEST(CHARTOROW

------------------

AAAH+WAAJAAAHxTAA+

Execution Plan

----------------------------------------------------------

------------------------------------------------------

| Id  | Operation        | Name | Rows  | Cost (%CPU)|

------------------------------------------------------

|   0 | SELECT STATEMENT |      |     1 |     2   (0)|

|   1 |  FAST DUAL       |      |     1 |     2   (0)|

------------------------------------------------------

Note

-----

- 'PLAN_TABLE' is old version

Statistics

----------------------------------------------------------

0  recursive calls

0  db block gets

0  consistent gets

0  physical reads

0  redo size

507  bytes sent via SQL*Net to client

385  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

1  rows processed

SQL>