@ SYNONYM (동의어)
test01 계정에서 kh COFFEE볼려고할때
SELECT * FROM KH.COFFEE;를 조회했다.
-> 사용자가 다른 사용자의 객체를 참조할때 [사용자ID].[테이블명] 표시
-> 길게표현되는 것을 동의어로 설정하면 간단하게 사용
1. 비공개 동의어
-> 객체에 대한 접근을 부여받은 사용자가 정의하는 것
-> 해당 사용자만 사용할 수 있음
2. 공개동의어
-> 권한을 주는 사용자(SYSTEM)가 정의한 동의어
-> 모든사용자가 사용(REPUBLIC)
SYS.DUAL이 있는데
이건 DUAL로 동의어를 저장해놓아서 쓸수 있는 것이다.
@ INDEX
-> SQL 명령문의 처리 속도를 향상시키기 위해서 컬럼에 대해서 생성하는 오라클의 객체
@ 장점
-> 검색속도가 빨라지고, 시스템에 걸리는 부하를 줄여서 전체적인 성능을 향상시킬 수 있음
@ 단점
-> 인덱스를 위한 추가 저장공간이 필요하고, 인덱스 생성하는데 시간이 걸림
-> 따라서 데이터의 변경작업(INSERT, UPDATE, DELETE)이 자주일어나는 테이블에서는
INDEX생성시에 오히려 성능이 떨어질 수 있다.
-> 기존에 데이터에 대해서 알고리즘을 이용해서 INDEX를 생성헀는데 데이터가 변경이 되면 다
시 새롭게 알고리즘을 사용해서 INDEX를 생성해야됨
@ 효율적인 인덱스 사용의 예
-> 전체 데이터중에 10~15%이내의 데이터를 검색하는 경우
-> 두개이상의 컬럼이 WHERE절이나 JOIN조건으로 자주 사용되는 경우
-> 한번 입력된 데이터가 변경이 자주일어나지 않는 경우
-> 한 테이블에 저장된 데이터 용량이 매우 큰경우
---------------------------------------------------------------------------
관리자 계정에서
GRANT CREATE SYNONYM TO kh; 해주기
-------------------------------------------------------------
kh계정에서
/*
@ SYNONYM (동의어)
test01 계정에서 kh COFFEE볼려고할때
SELECT * FROM KH.COFFEE;를 조회했다.
-> 사용자가 다른 사용자의 객체를 참조할때 [사용자ID].[테이블명] 표시
-> 길게표현되는 것을 동의어로 설정하면 간단하게 사용
1. 비공개 동의어
-> 객체에 대한 접근을 부여받은 사용자가 정의하는 것
-> 해당 사용자만 사용할 수 있음
2. 공개동의어
-> 권한을 주는 사용자(SYSTEM)가 정의한 동의어
-> 모든사용자가 사용(REPUBLIC)
*/
-- EMPLOYEE -> EMP
--동의어는 여기 계정만 사용가능하다.
CREATE SYNONYM EMP FOR EMPLOYEE;
select * from employee;
select * from EMP;
------------------------------------------------------------------
관리자 계정가서
--공개동의어를 만들어 줬다.
CREATE PUBLIC SYNONYM DEPT FOR KH.DEPARTMENT;
--test계정에서 사용할수 있도록 권한을 주었다.
GRANT SELECT ON kh.DEPARTMENT TO test01;
-----------------------------------------------------------------
kh계정가서
SELECT * FROM DEPT;
----------------------------------------------------------------------
test계정가서 조회해보면
select * from kh.department;
select * from dept;
------------------------------------------------------------------------
관리자계정가서
--동의어 제거하기
DROP PUBLIC SYNONYM DEPT;
---------------------------------------------------------------------
kh계정가서
--삭제하기
DROP SYNONYM EMP;
아까 동의어 지정한걸 지워버린 것이다.
-------------------------------------------------------------------------
kh계정가서
/*
@ INDEX
-> SQL 명령문의 처리 속도를 향상시키기 위해서 컬럼에 대해서 생성하는 오라클의 객체
@ 장점
-> 검색속도가 빨라지고, 시스템에 걸리는 부하를 줄여서 전체적인 성능을 향상시킬 수 있음
@ 단점
-> 인덱스를 위한 추가 저장공간이 필요하고, 인덱스 생성하는데 시간이 걸림
-> 따라서 데이터의 변경작업(INSERT, UPDATE, DELETE)이 자주일어나는 테이블에서는
INDEX생성시에 오히려 성능이 떨어질 수 있다.
-> 기존에 데이터에 대해서 알고리즘을 이용해서 INDEX를 생성헀는데 데이터가 변경이 되면 다
시 새롭게 알고리즘을 사용해서 INDEX를 생성해야됨
@ 효율적인 인덱스 사용의 예
-> 전체 데이터중에 10~15%이내의 데이터를 검색하는 경우
-> 두개이상의 컬럼이 WHERE절이나 JOIN조건으로 자주 사용되는 경우
-> 한번 입력된 데이터가 변경이 자주일어나지 않는 경우
-> 한 테이블에 저장된 데이터 용량이 매우 큰경우
*/
--EMPLOYEE테이블에서 3개로 만드는 것이다.
CREATE INDEX EMP_IND_NND ON EMPLOYEE(EMP_NAME,EMP_NO,HIRE_DATE);
SELECT EMP_NAME, EMP_NO, HIRE_DATE FROM EMPLOYEE;
--F10키 누르기 -->어떤 오브젝트 썼는지 찾을 수 있다.
------------------------------------------------------------------------------------------
--인덱스제거
DROP INDEX EMP_IND_NND;
SELECT EMP_NAME, EMP_NO, HIRE_DATE FROM EMPLOYEE;
--그후 F10누르면
'IT일반과목 > DataBase' 카테고리의 다른 글
데이터베이스 20180827 (학원14) (0) | 2018.08.27 |
---|---|
데이터베이스 20180824 (학원13) 과제 (0) | 2018.08.24 |
데이터베이스 20180824 (학원11) (0) | 2018.08.24 |
데이터베이스 20180823 (학원10) (0) | 2018.08.24 |
데이터베이스 (집공부9) (0) | 2018.08.23 |