mjeongriver
article thumbnail
Published 2022. 11. 17. 10:50
day34-DB: sql TIL/SQL

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. 권한

오라클 관리자 속성

 

오라클 관리자 - 속성 - 접속

 

접속할 수 있는 권한이 없다고 실행 됨.

 

창에 권한을 부여하면 접속 가능해짐

 

새로운 창 열고 옆에 잘 확인할 것

 

테이블 스페이스 - 데이터가 저장되는 물리적인 파일, 즉 데이터베이스 오브젝트 내 실제 데이터를 저장하는 공간이다.

 

보기 탭에서 dba 선택 - 저장영역 - 테이블 스페이스 보기 가능 - users 편집 - 디렉토리 값 복사해서 폴더에 붙이면 나오는 파일들 건드리면 안됨(유지)

 

 

- 오라클 관리자에서 실행

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;

 

- 마우스로 실행

테이블 스페이스 오른쪽 마우스 클릭 - 새로 만들기 - 2번재 사진까지 설정

 

오른쪽 마우스 클릭 - 사용자 생성

'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
profile

mjeongriver

@mjeongriver

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그