728x90
고유 인덱스 생성
CREATE UNIQUE INDEX idx_dept_name
on department(dname);
비고유 인덱스 생성
CREATE INDEX idx_stud_birthdate
ON student(birthdate);
결합 인덱스 생성
CREATE INDEX idx_stud_dno_grade
ON student(deptno, grade);
ASCENDING, DESCENDING INDEX
CREATE INDEX fidx_stud_no_name ON student(deptno DESC, name ASC);
함수 기반 인덱스
CREATE INDEX uppercase_idx ON emp(UPPER(ENAME));
SELECT * FROM emp WHERE UPPER(ENAME) = 'KING';
인덱스 삭제
DROP INDEX IDX_DEPT_NAME;
1. 인덱스
-처리 속도를 향상시키기 위해서, 바로 찾기
-칼럼에 대해 생성하는 객체
고유인덱스: 유일한 값을 가지는 칼럼에 대해 생성하는 인덱스
비고유인덱스: 중복된 값을 가지는 칼럼에 대해 생성하는인덱스
단일 인덱스: 하나의 칼럼으로만 구성
결합 인덱스: 두 개 이상의 칼럼을 결합하여 생성
descending index: 칼럼별로 정렬 순서를 별도로 지정하여 결합 인덱스를 생성하기 위한 방법
2. 인덱스 조회
SELECT index_name, uniqueness
FROM user_indexes
WHERE table_name = 'STUDENT';
1. 인덱스 정보 조회
SELECT index_name, column_name
FROM user_ind_columns
WHERE table_name = 'STUDENT';
2. 뷰란?
-가상테이블
뮤 생성하기
create view v_stud_dept101 as
select studno, name, deptno
from student
where deptno = 101;
select * from v_stud_dept101;
뷰 생성 함수 (반드시 칼럼 별명을 사용, 아니면 오류)
create view v_prof_avg_sal
as select deptno, sum(sal) sum_sal, avg(sal) avg_sal
from professor
group by deptno;
인라인 뷰 예시
select dname, avg_height, avg_weight
from (select deptno, avg(height) avg_height, avg(weight) avg_weight
from student
group by deptno)s,department d
where s.deptno= d.deptno;
계층적 질문 top down 방식
select deptno, dname, college
from department
start with deptno = 10
connect by prior deptno = college;
계층적 질문 레벨별
select level
, lpad(' ', (level-1)*2) || dname 조직도
from department
start with dname = '공과대학'
connect by prior deptno = college;
계층구조에서 가지 제거 방법 예 1
select deptno, college, dname, loc
from department
where dname!= '정보미디어학부'
start with college is null
connect by prior deptno = college;
계층구조에서 가지 제거 방법 예 2
select deptno, college, dname, loc
from department
start with college is null
connect by prior deptno = college;
and dname! = '정보미디어학부';
계층적질의문 응용 – CONNECT_BY_ROO
select LPAD(' ', 4*(LEVEL-1)) || ename 사원명,
empno 사번,
CONNECT_BY_ROOT empno 최상위사번,
LEVEL
FROM emp
start with job = upper('president')
connect by prior empno = mgr;
계층적질의문 응용 – CONNECT_BY_ISLEA
SELECT LPAD(' ', 4*(LEVEL-1)) || ename 사원명,
empno 사번,
CONNECT_BY_ISLEAF Leaf_YN,
LEVEL
FROM emp
START WITH job = UPPER('President')
CONNECT BY NOCYCLE PRIOR empno = mgr;
계층적질의문 응용 – ORDER SIBLINGS BY
SELECT LPAD(' ', 4*(LEVEL-1)) || ename 사원명,
ename ename2, empno 사번, level
from emp
start with job = upper('President')
connect by nocycle prior empno = mgr
order siblings by ename;
댓글