Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-member domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /ledcorps/www/wp/wp-includes/functions.php on line 6114 10.1 인덱스(Index) – 대나무숲

10.1 인덱스(Index)

출처 URL : http://www.gurubee.net/lecture/1035

인덱스는 테이블이나 클러스트에서 쓰여지는 선택적인 객체로서, 오라클 데이터베이스 테이블내의 원하는 레코드를 빠르게 찾아갈 수 있도록 만들어진 데이터 구조이다.

– 자동 인덱스 : 프라이머리 키 또는 UINQUE 제한 규칙에 의해 자동적으로 생성되는 인덱스.

– 수동 인덱스 : CREATE INDEX 명령을 실행해서 만드는 인덱스

https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-7746436232991148&output=html&h=15&slotname=8379695082&adk=1182798888&adf=362109348&pi=t.ma~as.8379695082&w=468&lmt=1687321360&url=http%3A%2F%2Fwww.gurubee.net%2Flecture%2F1035&wgl=1&dt=1687321360027&bpp=4&bdt=35&idt=66&shv=r20230614&mjsv=m202306080101&ptt=5&saldr=sa&abxe=1&cookie=ID%3D132b99f76c846f1d-2280e91906dd00ab%3AT%3D1680829923%3ART%3D1687321164%3AS%3DALNI_MaoDEtzkBV17wrroWb3_ZBisy7yKg&gpic=UID%3D00000bedaaad15ec%3AT%3D1680829923%3ART%3D1687321164%3AS%3DALNI_MbSjwUbKLl-ARHi-BgUs6yrivBVog&prev_fmts=693×90%2C647x90%2C120x600&correlator=1723312924040&frm=20&pv=1&ga_vid=1581130283.1687247601&ga_sid=1687321360&ga_hid=592070834&ga_fc=1&u_tz=540&u_his=50&u_h=1067&u_w=1707&u_ah=1019&u_aw=1707&u_cd=24&u_sd=1.5&adx=61&ady=1009&biw=693&bih=900&scr_x=0&scr_y=0&eid=44759876%2C44759927%2C44759837%2C44788442&oid=2&pvsid=472503849917063&tmod=662380488&uas=0&nvt=1&ref=http%3A%2F%2Fwww.gurubee.net%2Foracle%2Fsql&fc=640&brdim=-725%2C0%2C-725%2C0%2C1707%2C0%2C724%2C1019%2C710%2C900&vis=1&rsz=%7C%7Cebr%7C&abl=CS&pfx=0&fu=0&bc=23&ifi=2&uci=a!2&btvi=2&fsb=1&xpc=2kzVmyMYrY&p=http%3A//www.gurubee.net&dtd=104
인덱스를 생성하는 것이 좋은 컬럼
  • ① WHERE절이나 join조건 안에서 자주 사용되는 컬럼
  • ② null 값이 많이 포함되어 있는 컬럼
  • ③ WHERE절이나 join조건에서 자주 사용되는 두 개이상의 컬럼들
다음과 같은 경우에는 인덱스 생성이 불필요 하다.
  • ① 테이블이 작을 때
  • ② 테이블이 자주 갱신될 때

오라클 인덱스는 B-tree(binary search tree)에 대한 원리를 기반으로 하고 있다. B-tree 인덱스는 컬럼안에 독특한 데이터가 많을 때 가장 좋은 효과를 낸다.

이 알고리즘 원리는
① 주어진 값을 리스트의 중간점에 있는 값과 비교한다.만약 그 값이 더 크면 리스트의 아래쪽 반을 버린다. 만약 그 값이 더 작다면 위쪽 반을 버린다.
② 하나의 값이 발견될 때 까지 또는 리스트가 끝날 때까지 그와 같은 작업을 다른 반쪽에도 반복한다.

비트맵 인덱스

비트맵 인덱스는 각 컬럼에 대해 적은 개수의 독특한 값이 있을 경우에 사용하는 것이 좋다.(ex 남,여의 값을 가지는 성별 컬럼)

비트맵 인덱스는 B-tree 인덱스가 사용되지 않을 경우에서 성능을 향상 시킨다.

테이블이 매우 크거나 수정/변경이 잘 일어나지 않는 경우에 사용할수 있다.

 
SQL> CREATE BITMAP INDEX emp_deptno_indx 
     ON emp(deptno); 
    

UNIQUE 인덱스

UNIQUE 인덱스는 인덱스를 사용한 컬럼의 중복값들을 포함하지 않고 사용할 수 있는 장점이 있다.

프라이머리키 와 UNIQUE 제약 조건시 생성되는 인덱스는 UNIQUE 인덱스이다.

 
SQL> CREATE UNIQUE INDEX emp_ename_indx 
     ON emp(ename); 
    

NON-UNIQUE 인덱스

NON-UNIQUE 인덱스는 인덱스를 사용한 컬럼에 중복 데이터 값을 가질수 있다.

 
SQL> CREATE INDEX  dept_dname_indx 
     ON dept(dname);
    

결합 인덱스

복수개의 컬럼에 생성할 수 있으며 복수키 인덱스가 가질수 있는 최대 컬럼값은 16개 이다

 
SQL> CREATE UNIQUE INDEX emp_empno_ename_indx 
     ON emp(empno, ename);     
    

인덱스의 삭제

인덱스의 구조는 테이블과 독립적이므로 인덱스의 삭제는 테이블의 데이터에는 아무런 영향도 미치지 않는다.

인덱스를 삭제하려면 인덱스의 소유자 이거나 DROP ANY INDEX권한을 가지고 있어야 한다.

인덱스는 ALTER를 할 수 없다.

 
SQL> DROP INDEX emp_empno_ename_indx; 
    

인덱스 데이터사전

인덱스에 대한 정보는 USER_INDEXES 뷰 또는 USER_IND_COLUMNS뷰를 통해 검색할 수 있다.

 
SQL> SELECT index_name, index_type 
     FROM USER_INDEXES 
     WHERE table_name='EMP'; 

INDEX_NAME              INDEX_TYPE
-------------------     -----------
EMP_DEPTNO_INDX         BITMAP
EMP_PK_EMPNO            NORMAL    
    

인덱스에 대한 자세한 강좌는 어드민 강좌를 참고해 주세요 ^^


답글 남기기 0

Your email address will not be published. Required fields are marked *