[Oracle]INDEX 실습하기

jh5959·3일 전
0

SQL

목록 보기
7/8

인덱스란

  • 테이블에서 데이터를 빠르게 검색하기 위한 구조
  • B* Tree 기반의 정렬된 구조
  • 값 + 위치(rowid) 형태로 저장됨 → 위치는 고유함
  • 오라클이 자동으로 사용하거나 무시할 수도 있음 (옵티마이저 판단)
---인덱스 실습
CREATE TABLE emp_test (
  emp_id     NUMBER PRIMARY KEY,
  emp_name   VARCHAR2(50),
  dept_id    NUMBER,
  salary     NUMBER
);

BEGIN
  FOR i IN 1..10000 LOOP
    INSERT INTO emp_test
    VALUES (i, '직원_' || i, MOD(i, 10), 1000 + MOD(i, 1000));
  END LOOP;
  COMMIT;
END;
/

set autotrace on;
select *
from emp_test
where emp_name='직원_9999';

create index idx_emp_name on emp_test(emp_name);

EXPLAIN PLAN FOR
select *
from emp_test
where emp_name='직원_9999';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); --인덱스 사용여부 확인
-- 인덱스를 사용함

EXPLAIN PLAN FOR
select *
from emp_test
where emp_id >400;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
--400이상인 값은 많아서 인덱스 사용안하고 full scan함

0개의 댓글