SUMMARY - 인덱스의 효율적인 활용 방법 , 인덱스 적용 기준, 인덱스 컬럼 선정, 설계시 고려사항, 기존에 존재하는 테이블을 이용하여 새로운 테이블 생성, 롤(role), 데이터베이스 권한 종류, 다..

CODEDRAGON Development/Database

반응형


 

인덱스의 효율적인 활용 방법 

·         전체 데이터 중에서 10%~15% 이내의 데이터를 검색하는 경우에 적용하는 것이 효율적이다.

·         이상의 컬럼이 WHERE절이나 조인(join) 조건으로 자주 사용되는 경우 인덱스를 생성하는 것이 효율적이다.

·         테이블에 저장된 데이터 용량이 상당히 경우 인덱스를 활용하여 검색하는 것이 효율적이다.

·         인덱스를 통한 검색 속도의 증대를 이유로 모든 테이블에 대하여 인덱스를 생성하는 것은 비효율적이다.

 

https://codedragon.tistory.com/4352

 

 

 

 

 

 

인덱스 적용 기준, 인덱스 컬럼 선정, 설계시 고려사항

https://codedragon.tistory.com/4352

 

 

 

 

 

 

 

 

 

다중행 서브 쿼리

https://codedragon.tistory.com/4500

 

 

 

 

 

 

기존에 존재하는 테이블을 이용하여 새로운 테이블 생성

·         CREATE TABLE 테이블명 AS SELECT 컬럼리스트.... FROM 원본테이블명; 구문의 형식으로 만들 있다.

·         원본 테이블의 인덱스는 복사하지 않는다.

·         null not null 제약조건만 복사되며 다른 제약조건은 복사되지 않는다.

·         LONG 타입의 컬럼은 복사할 없다.

 

https://codedragon.tistory.com/4512

https://codedragon.tistory.com/4381

 

 

 

 

 

 

(role)

·         사용자가 데이터베이스에 접속할 있도록 기본적으로 미리 정의 되어 제공되는 롤이 있다.

·         DBA롤은 사용자들이 소유한 데이터베이스 객체를 관리하고 사용자들을 작성하고 변경, 제거할 있는 권한을 보유한 롤이다.

·         사용자 롤을 정의하기 위해서는 롤을 생성하고, 생성된 롤에 권한을 부여한다.

·         특정 사용자에게 적용된 롤을 회수하기 위해서는 REVOKE ROLE 구문을 사용하고 , 롤을 삭제하기 위해서는 DROP ROLE 구문을 사용한다.

 

https://codedragon.tistory.com/4375

 

 

 

 

 

 

데이터베이스 권한 종류

https://codedragon.tistory.com/4375

 

 

 

 

 

 

대표적인 시스템 권한

시스템 권한

설명

CREATE USER

새롭게 사용자를 생성하는 권한

DROP USER

사용자를 삭제하는 권한

DROP ANY TABLE

임의의 테이블을 삭제할 있는 권한

QUERY REWRITE

함수 기반 인덱스를 생성하는 권한

BACKUP ANY TABLE

임의의 테이블을 백업할 있는 권한

CREATE SESSION

테이터베이스에 접속할 있는 권한

CREATE TABLE

사용자 스키마에서 테이블을 생성할 있는 권한

CREATE VIEW

사용자 스키마에서 뷰를 생성할 있는 권한

CREATE SEQUENCE

사용자 스키마에서 시퀀스를 생성할 있는 권한

CREATE PROCEDURE

사용자 스키마에서 함수를 생성할 있는 권한

RESOURCE

·         객체를 생성, 변경, 제거 있는 권한

·         DDL, DML 명령어를 사용이 가능합니다.

CONNECT

·         데이터베이스에 연결할 있는 권한

DBA

·         데이터베이스 관리자 권한

https://codedragon.tistory.com/4312

 

 

 

 

 

 

QUERY 예시 1

employees 스키마에서 현재 부서에 해당하는 직원번호, 부서번호, 발령시작일 가지를 조회한 결과를 서브 쿼리의 활용하여 테이블(t_current_dept_emp) 생성하는 SQL문장 예시입니다.

CREATE table t_current_dept_emp

SELECT e.emp_no AS emp_no, d.dept_no AS dept_no, d.from_date AS from_date

FROM dept_emp d, employees e

WHERE d.emp_no = e.emp_no AND d.to_date > now();

 

 

 

 

 

 

QUERY 예시 2

다음의 보기에서 제시된 개의 테이블을 조인하여 이름, 부서코드, 부서명을 직원테이블의 나이순으로 출력하는 SQL문을 작성 예시입니다.


 

SELECT s_emp.name, s_emp.dept_id, s_dept.dept_name

FROM s_dept, s_emp

WHERE s_dept.dept_id = s_emp.dept_id

ORDER BY s_emp.age;

 

 

 

 

 

 

QUERY 예시 3

사용자에게 권한을 부여하고 회수하는 명령어 예시입니다.

 

사용자 : sampleuser

접근 호스트 : localhost

대상 데이터베이스 : sakila

대상 테이블 : 모든 테이블

 

. 사용자 권한 주기

- SELECT, EXCUTE 권한을 sakila 테이블에 부여

GRANT SELECT, EXCUTE ON sakila.* TO 'sampleuser'@'localhost'

 

. 사용자 권한 회수

)항에 부여된 권한 EXCUTE 권한 회수 

 

REVOKE EXCUTE ON sakila.* FROM 'sampleuser'@'localhost'