SQLD 문제풀이 5
1. grouping
값이 나와야할곳 = 0
소계가 나와야할곳 = 1이다.
2. rollup cube groupipng sets
세 함수 모두 일반 그룹 함수로 동일한 결과를 추출할수잇다.
세 함수모드 집계대상 커럶이외읭 그룹 컬럼의 값은 null을 반환한다.
3. ps/sql특징
1.pl/sql은 블록구조로 되어 있어 각 기능별로 모듈화가 가능하다.
2.변수상수 등을 선언하여 sql문장간 값을 교환한다.
3.if loop등 절차형언얼르 사용하여 절차적인 프고그램이 가능하게 한다.
4.dbms정의에러나 사용자 정의에러를 정의하여 사용할수잇다.
5.오라클에 내장되어잇으므로 오라클과 pl/sql을 지원하는 어떤 서버로도 프로그램을 옮길ㅇ수잇다.
6.pl/sql은 응용프로그램의 성능을 향상시킨다.
7.pl/sql은 여러 sql문장을 블록으로 묶고 한번에 블록전부를 서버로 보내기 때문에 통신량을 줄일수잇다.
8.작성자의 기준으로 트랜잭션을 분할할수잇으면 또한 프로시저냉에서 다른 프로시저를 호출할 경우 호출 프로시저의 트랜잭션과는 별도로 자율 트랜잭션을 처리할수잇다.
9.동적 sql 혹은 ddl문장을 실행할때 EXECUTE IMMEDIATE를 사용해야한다.
4. 저장모듈
SQL문장을 데이터베이스 서버에 저장하여 사용자와 애플리케이션 사이에서 공유할수 있도록 만든 일종의SQL컴포넌트프로그램
독립적으로 실행되거나 다른 프로그램으로부터 실행될 수 잇는 완전한 실행프로그램이다. 오라클의 저장모둘에는 프로시져 사용자 저장함수 트리거가있다.
5. 트리거
트리거는 데이터의 무결성과 일관성을 위해 사용한다.
트랜잭션을 담ㅁ당하는 TCL을 사용할수없다.
프로시저와 트리거의 차이
프로시저 : CREATE Procedure 문법사용, EXECUTE 명령어로 실행, COMMIT ROLLBACK 실행가능
트리거 : CREATE Trigger 문법사용, 생성후 자동으로 실행, COMMIT ROLLBACK실행안됨
3.SQL 최적화 기본원리
이부분은 시험에 잘나오지않아 개념책에서 나오지 않은 부분이라 문제를 통해 알아보도록하자.
1. 실행계획
실행계획은 예상정보로 액세스기법 질의 처리 예상비용 조인순서를 알수있다.
실행계획을 읽는 순서는 위에서 아래로 안에서 밖으로 읽는다.
SQL 처리를 위한 실행절차와 방법을 표현한것이다.
조인방법 조인순서 액세스기법 등이 표현된다.
CBO(비용기반 옵티마이저)의 실행계획에서는 단계별 예상 비용 및 건수 등이 표시된다.
SQL 실행계획이 달라진다고 해서 실행결고가 달라지지는 않는다.
2. SQL처리흐름도
SQL처리흐름도는 SQL실행계획을 시각화해서 표현한것이다. 실행시간을 알수없다.
3. 인덱스
기본인덱스는 유니크 & NOT NULL의 제약조건을 가진다.
보조인덱스는 유니크 인덱스가 아니라면 중복 데이터의 입력이 가능하며 자주변경되는 속성을 인덱스로 선정하면 업데이트및 삭제에 좋지않ㄴ으 영향을 미치므로 후보로 적절하지 않다.
인덱스는 조회만을 위한 오브젝트이며 삽입 삭제 갱신의 경우 오히려 부하르 ㄹ가중한다.
B 트리는 관걔형데이터베이스에서 가장많이 사용되는 인덱스이다.
인덱스가 존재하는 상황에서 데이터를 입력하면 매번 인덱스 정렬이 이루어지므로 대량데이터를 삽입할때는 모든 인덱스를 제거하고 삽이비 끝난후 인덱스를 다시 생성하는 것이 좋다.
인덱스로 조횔할때 컬럼의 순서는 데이터 조회시 성능적인 관점에서 매우 중요한 역할을 한다.
인덱스를 구성하는 커럼 이외의 데이터가 업데이트 될때는 인덱스로 인한 부하가 발생하지 않는다.
4. 알고리즘
B-TREE인덱스는 브랜지블록과 리프블록으로 구성되며 브랜치 블록은 분기를 목적으로 하고 리프블록은 인덱스를 구성하는 커럶의 값으로 정렬된다.일반적으로 OLTP시스템 환경에서 가장많이 사용된다.
CLUSTERED 인덱스는 리프페이지가 곧 데이터펭리지이며 리프페이지의 모든 데이터는 인덱스 키 커럶 순으로 물리적으로 정렬되어 저장된다.
BITMAP인덱스는 시스템에서 사용될 질의를 시스템 구현시에 모두 알수없는 경우인 DW 및 AD-HOC질의환경을 위해 설계되었으며 하나의 인덱스 키 엔트리가 많은 행에 대한 포인터르 ㄹ저장하고 있는 구조이다.