1. 인덱스
-- index
-- index는 primary key, unique 제약 조건에서 자동으로 생성되고, 조회를 빠르게 해주는 hint 역할을 합니다.
-- index 종류로는 고유, 비고유 인덱스가 있습니다.
-- 유니크 컬럼에는 unique 인덱스, 일반 컬럼에서는 unique를 생략하고 지정할 수 있습니다.
-- index는 조회를 빠르게 하지만, 무작위하게 많은 인덱스 생성해서 사용하면 오히려, 성능 부하를 일으킬 수 있습니다.
-- 그래서 최후의 수단으로 index를 사용하는 것이 올바른 사용방법.
create table emps2 as (select * from employees);
-- 인덱스 없을 때 full 스캔
select * from emps2 where first_name = 'Nancy'; -- f10번으로 cost 확인
-- 인덱스 생성
create index emps2_firstname_idx on emps2(first_name);
-- 인덱스 있을 때
select * from emps2 where first_name = 'Nancy';
-- 인덱스 삭제(테이블에 영향을 미치지 않음)
drop index emps2_firstname_idx;
-- 결합 인덱스(컬럼 2개 이상)
create index emps_name_idx
on emps2 (first_name, last_name);
select * from emps2 where first_name = 'Nancy'; -- 힌트
select * from emps2 where first_name = 'Nancy' and last_name = 'jj';
--------------------------------------------------------------------------------
-- 힌트 구문
select employee_id, salary from emps2;
select /*+ index(emps2 emps_name_idx) */ -- 더 높게 나왔을 때는 빼는게 좋음, 인덱스를 태운다
employee_id, salary
from emps2;
--------------------------------------------------------------------------------
-- 힌트 구문
select *
from (select rownum as rn,
A.*
from (select *
from emps2
order by first_name desc) A
)
where rn > 10 and rn <= 20;
--------------------------------------------------------------------------------
-- 힌트를 거꾸로
select *
from (select /*+ index_desc(emps2 emps_name_idx ) */ -- 인덱스 기준으로 거꾸로 받음
rownum as rn,
employee_id,
salary
from emps2
order by first_name desc) -- 위에 주석이 없으면 인덱스 힌트가 없어서 자기 맘대로 돌아감..
where rn > 10 and rn <= 20;
2. 권한
오라클 관리자 속성
- 오라클 관리자에서 실행
select * from hr.employees;
-- 계정 생성
create user com01 identified by com01; --user 뒤에 이름, by 뒤에 비밀번호
-- 권한 부여
grant create session, create table, create sequence, create view to com01;
-- 테이블 스페이스 연결(데이터가 저장되는 물리적인 공간) - (직접 생성도 가능하고, 기존 테이블 스페이스를 재활용)
alter user com01 default tablespace users quota unlimited on users; -- 무제한 사용할 수 있는 권한을 줌
-- 계정 삭제
drop user com01 cascade;
- 마우스로 실행
'TIL > SQL' 카테고리의 다른 글
day36-DB: sql (0) | 2022.11.21 |
---|---|
day35-DB: sql (0) | 2022.11.18 |
day33-DB: sql (3) | 2022.11.16 |
day32-DB: sql (0) | 2022.11.15 |
day31-DB: sql (0) | 2022.11.14 |