오라클에서 인덱스를 수정하기 위해서는 ALTER INDEX 문을 사용하면 된다. ALTER INDEX 문을 사용하여 인덱스명 변경(RENAME), 비활성화(UNUSABLE), 재구축(REBUILD)을 할 수 있다. 그러나 인덱스 컬럼을 변경하기 위해서는 인덱스를 삭제 후 다시 생성하는 방법을 사용해야 한다. 인덱스 수정 인덱스 컬럼 추가 및 변경 -- 인덱스 삭제 DROP INDEX emp_ix01; -- 인덱스 재생성 CREATE INDEX emp_ix01 ON emp(hiredate, job); 오라클은 ALTER INDEX 문을 사용해서 인덱스 컬럼을 변경하지 못한다. 인덱스의 컬럼을 추가, 제거 또는 순서를 변경하기 위해서는 인덱스를 삭제(DROP)하고 다시 생성(CREATE) 해야 한다. 인덱스..
오라클에서는 다양한 종류의 인덱스를 생성해서 사용할 수 있다. B-트리 인덱스, 비트맵 인덱스, 파티션 인덱스, 함수 인덱스, 도메인 인덱스를 생성할 수 있으며, 아래는 가장 많이 사용하는 B-트리 인덱스(일반 인덱스)를 생성하는 방법이다. CREATE [UNIQUE] INDEX [스키마명.]인덱스명 ON [스키마명.]테이블명 (컬럼1 [, 컬럼2, 컬럼3, ...]) 대괄호([]) 항목은 생략이 가능하다. 인덱스는 한 개 이상의 컬럼으로 만들 수 있으며, 하나의 테이블에 여러 개의 인덱스를 생성할 수 있다. 테이블에 인덱스가 많이 생성되어 있으면, SELECT는 빠를 수 있지만 데이터 변경(INSERT, UPDATE, DELETE)은 느려질 수 있으므로 주의해야 한다. 인덱스 생성 단일 인덱스 생성 (..
오라클 버전이 업그레이드 되면서 옵티마이저의 성능도 많이 향상 되어 쿼리를 실행하면 최적의 인덱스를 선택하여 쿼리를 실행한다. 그러나 옵티마이저가 엉뚱한 인덱스를 선택하여 쿼리가 느려지는 경우가 있다. 실무에서 쿼리문를 작성하다보면 "인덱스가 안탄다", "인덱스를 태워야한다" 와 같은 얘기를 많이 듣는다. 아래는 어떻게 인덱스를 태워야하는지 간단히 정리한 내용이다. SELECT절 첫 줄에 힌트 주석(/*+ */)을 작성하여 적절한 인덱스를 부여하면 된다. 주석에 꼭 "+"를 붙여야 힌트절이 실행되며 "+"가 없으면 일반 주석으로 간주하고 아무런 이벤트가 없다. SELECT /*+ INDEX(a EMP_IDX02) */ a.empno , a.ename , a.hiredate FROM emp a 인덱스 힌..
오라클(Oracle) 인덱스 조회 쿼리 오라클 쿼리를 작성하기 전에 필수적으로 인덱스(Index)를 확인해야 한다. 인덱스를 무시하고 쿼리를 작성하면 심각한 성능 이슈가 발생 할 수 있다. 인덱스는 오라클 시스템뷰의 하나인 ALL_IND_COLUMNS 뷰를 사용하여 쉽게 조회가 가능하다. SELECT a.table_name , a.index_name , a.column_name FROM all_ind_columns a WHERE a.table_name = 'EMP' ORDER BY a.index_name , a.column_position [컬럼 코멘트를 포함하여 조회] SELECT a.table_name , a.index_name , a.column_name , b.comments FROM all_in..