실행계획
쿼리를 수행하기(what) 위해서 방법(how)에 대한 계획을 세운다.
(Cost based) Optimizer가 계획을 작성.
Sort Merge
Nested Loop
- 중복 for문 방식으로 join하는 방식.
- 행의 개수가 작은 것이 좋다. driving table을 선택.
Hash
집계함수
집계 함수를 사용하여 각 그룹의 합계 정보를 얻고 몇 개의 그룹으로 열을 나눌 수 있다.
※ *은 NULL을 포함하여 센다.
count(DISTINCT|ALL|* 표현식)
- 열의 개수를 리턴한다. (표현식에 대해 NULL은 포함하지 않는다.)
sum(DISTINCT|ALL 열이름) : 열에 대한 합계를 구한다. NULL에 대한 고려를 할 필요가 없다.
avg(DISTINCT|ALL 열이름) : 열에 대한 평균을 구한다. NULL에 대해 고려를 해야한다.
(내부적으로 count를 쓰기 때문)
max(ALL 표현식), min(ALL 표현식) : 최대값과 최소값을 구한다.
STDDEV(DISTINCT|ALL 열이름) : 열에 대한 표준편차를 구한다.
VARIANCE(DISTINCT|ALL 열이름) : 열에 대한 분산을 구한다.
GROUP BY 구문
테이블 select 순서 : from절 -> where절 -> group by절 -> having절 -> select절 -> order by절
having절에서도 (일반)열에 대한 정보를 적을 수 있다. 하지만,
where절에 (일반)열에 대한 정보를 필터 하면 그룹핑 할 양이 줄어들어 효율적이다.
※ GROUP BY절에는 positional notation이나 column alias를 사용할 수 없다. (수행 순서 때문!)
positional notation : select 구문에 나타난 열의 인덱스
positional notation 예시)
select ename, sal, comm from emp order by 2
2의 뜻은 select의 열 중 2번째인 sal을 뜻함.
column alias 예시)
select dept_no, sum(sal) sum_sal from emp order by sum_sal
select 절에 나타나는 열은 group by절에도 나타나야 한다.
예시)
select deptno, job, sum(sal)
from emp
where deptno in (10,20)
group by deptno, job
'컴퓨터 공부 > Advanced Database' 카테고리의 다른 글
[5월 28일 3교시] 서브쿼리 (0) | 2009.05.28 |
---|---|
[5월 28일 2교시] 그룹 함수 2 (0) | 2009.05.28 |
[5월 27일 3교시] 조인 2 (0) | 2009.05.27 |
[5월 27일 2교시] 조인 1 (0) | 2009.05.27 |
[5월 27일 1교시] SQL 함수 3(그림) (0) | 2009.05.27 |