@@@INDEX@@@
- SQL문의 처리 속도를 향상시키기 위해서 컬럼에 대해 생성하는 오라클 객체
@@1. 인덱스 생성 방법
@사용자가 정의한 인덱스를 관리하는 데이터 딕셔너리
SELECT * FROM USER_IND_COLUMNS;
[표현식]
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블(컬럼명, 컬럼명, ... | 함수명, 함수계산식);
인덱스는 위 표현식으로 일일이 생성 가능하지만 PRIMARY KEY, UNIQUE 제약조건 설정 시 자동으로 같이생성됨
@@2. 인덱스 구조
ROWID : DB내 데이터 공유 주소, ROWID를 이용하여 데이터 접근 가능
1 ~ 6 번째 : 데이터 오브젝트 번호
7 ~ 9 번째 : 파일번호
10 ~ 15 번째 : BLOCK 번호
16 ~ 18 번째 : ROW번호
SELECT ROWID, EMP_ID, EMP_NAME
FROM EMPLOYEE;
@@3. INDEX의 원리
인덱스는 MAP 형식으로 구성이 되어 있음
KEY = 지정한 컬럼
VALUE = ROWID
인덱스를 활용한 검색
WHERE절 조건에 인덱스가 부여된 컬럼을 사용함
EX)
SELECT EMP_ID, EMP_NAME
FROM EMPLOYEE
WHERE EMP_ID = 201;
EMP_ID는 PRIMARY KEY 이므로 INDEX가 자동으로 생성되있음 INDEX가 설정되어 있는 컬럼을
WHERE절로 조건을 활용하면 해당 조건을 만족하는 컬럼을 ★바로 찾아가서 조회하게됨
만약 INDEX가 설정되지 않은 컬럼을 조건으로 하여 검색하면 해당 조건을 만족하는 컬럼을
찾기위해 테이블의 모든 행을 검사하게됨 (FULL SCAN)
@INDEX를 활용한 정렬
SELECT * FROM EMPLOYEE
WHERE EMP_NO > '0';
@@@ SYNONYM @@@
다른 DB(사용자)가 가진 객체에 대한 별명 혹은 줄임말
다른 사용자의 객체에 접근하는 경우
'사용자명.객체명' 으로 접근해야하지만 SYNONYM(동의어)를 사용하면 간단한 이름으로 접근가능
SYNONYM 생성 방법
[표현식]
CREATE SYNONYM 별명(줄임말)
FOR 사용자명.객체명
동의어 구분
비공개/ 공개 동의어
@1. 비공개 동의어
객체에 대한 접근 권한을 부여받은 사용자가 정의한 동의어로 해당 사용자만 사용 가능
EX) sample 계정을 이용하여 kh계정의 EMPLOYEE
테이블 접근 시 동의어를 설정하여 EMP로 접근하기
1) sample 계정에 kh계정의 EMPLOYEE 테이블 조회 권한 부여
GRANT SELECT ON kh.EMPLOYEE TO sample;
2) kh.EMPLOYEE 테이블 조회 확인
3) kh.EMPLOYEE 테이블의 별명을 EMP로 지정
CREATE SYNONYM EMP
FOR kh.EMPLOYEE;
- 오류 권한이 없음
4) sample 계정에 SYNONYM 생성 권한 부여
GRANT CREATE SYNONYM TO sample;
5) SYNONYM 생성
CREATE SYNONYM EMP FOR kh.EMPLOYEE;
@. 공개 동의어
모든 권한을 부여할 수 있는 계정(DBA)가 정의한 동의어
모든 사용자가 사용할 수 있는 동의어를 생성할 수 있음
(PUBLIC)
EX) DUMMY TABLE - DUAL
EX) kh 계정의 DEPARTMENT 테이블을 DEPT라는
공개 동의어 설정
1) (관리자계정) 공개동의어 생성
CREATE SYNONYM DEPT
FOR kh.DEPARTMENT;
2) 다른계정(sample)도 공개 동의어 (DEPT) 사용가능한지 확인
-> sample 계정에 kh 계정의 DEPARTMENT 테이블 SELECT 권한부여
GRANT SELECT ON kh.DEPARTMENT TO sample
3) (sample 계정)
DEPT(공개 동의어) 사용 가능한지 확인
SELECT * FROM DEPT;
@ 3. 동의어삭제
DROP SYNONYM EMP;
'study > Oracle' 카테고리의 다른 글
localhost:8080 사용자 이름, 암호 문제 (0) | 2021.10.17 |
---|---|
9_oracle_명령어 정리 (0) | 2020.06.09 |
8_oracle_이론 정리 (0) | 2019.11.26 |
7_oracle_DDL (ALTER, DROP) (0) | 2019.11.23 |
6_oracle_DML, DCL, TCL (0) | 2019.11.22 |