| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 알고리즘
- 선택정렬
- It
- 톰캣버전확인
- adsp공부방법
- windows11setup
- 호환성수준변경
- 건대양갈비
- 예제
- 비밀번호
- mssql호환성수준확인
- 순환
- mssql프로시저검색
- it자격증추천
- 프로세스에연결
- 윈도우11인터넷없이설치
- SQL
- 상태공간트리
- sql튜닝
- 코딩테스트
- SQLD
- mssql함수검색
- 분할정복법
- w3wp.exe
- 코테
- 삽입정렬
- 독학
- windows11install
- 윈도우11네트워크없이설치
- mssql호환성수준
- Today
- Total
목록SQL (9)
404 not found
SUBQUERY와 함수의 활용 1. SUBQUERY의 종류 FROM 절: InlineVIEW WHERE절: Correlated Subquery / Nested Subquery >SELECT 옆, WHERE절 ORDER BY절에 위치한 서브쿼리를 Scalar Subquery라 부른다. >GROUP BY 절을 제외하고는 어디든 서브쿼리가 위치할 수 있다. 2. NESTED SUBQUERY SELECT empno, ename FROM emp WHERE deptno = (SELECT deptno FROM dept WHERE dname = 'SALES'); > SUBQUERY가 가장 먼저 행해진다. 3. CORRELATED SUBQUERY SELECT ename, empno FROM emp WHERE EXISTS..
1. CARTESIAN PRODUCT의 개념 1) WHERE절이 없는 조인 수행 2) 조인을 위한 조건이 없이 조인 수행 : 데이터 복제라는 개념을 활용하기 위해 사용하지만, 잘못 사용하게 되면 오히려 데이터를 부풀리는 원인이 되기 떄문에 퍼포먼스를 오히려 나쁘게 할 수도 있음 SELECT * FROM Table_A, Table_B > 앞에있는 테이블은 뒤에 있는 테이블의 수만큼 복제가 되있다 (A테이블 수 * B테이블 수) 2. 자주 사용하는 방법 : COPY_T, IMSI_T, DUMMY_T와 같은 temporary Table을 활용함 : DUAL(1건의 데이터를 가진 DUMMY 테이블)을 사용함 : 타 SQL에서 사용하고 있는 Table 활용 및 ROWNUM을 사용함 > 주로 MASTER성 테이블을..
SORT/MERGE/HASH 조인 1. SORT/MERGE JOIN : 연결고리에 인덱스가 전혀 없는 경우 : 대용량의 자료를 조인해야 함으로써 인덱스 사용에 따른 랜덤 액세스의 오버헤드가 많은 경우 ① 각 테이블에 대해 동시에 독립적으로 데이터를 먼저 읽어 들임 ② 일혀진 각 테이블의 데이터를 조인을 위한 연결고리에 대하여 정렬을 수행함 ③ 정렬이 모두 끝난 후에 조인 작업이 수행됨 * 튜닝포인트 : 각 테이블로부터 데이터를 빨리 읽어 들이도록 함 : 메모리를 최적화함 2. SORT/MERGE JOIN의 수행 절차 가정: color만 인덱스임 SELECT /*+USE_MERGE(a b)*/ a.color, ..., b.size, ... FROM table_a a, table_b b WHERE a.joi..
NESTED LOOPS 조인 1. NESTED LOOPS JOIN 옵티마이저가 Driving Table(Outer Table)을 결정함 Driving Table이 아닌 테이블은 Driven Table(Inner Table)로 지정함 Driving Table의 각 row에 대해 이들이 추출될 떄마다 Driven Table의 연관된 모든 row를 조인에 의해 액세스 * 튜닝포인트 : 테이블 간 조인 횟수를 최소화할 수 있도록 Driving Table 선택 > 조인 순서 제어 : Driven Table의 연결고리 칼럼에 대한 인덱스 구성 2. NESTED LOOPS JOIN의 수행 절차 : 연결횟수는 Driving Table의 건수와 같다. 3. NESTED LOOPS JOIN의 장단점 : 인덱스에 의한 랜덤..
인덱스 활용이 불가능한 경우 1. 인덱스를 사용하지 말아야 하는 경우 : 조건에 의한 처리범위가 넓어짐으로 인해 분포도가 나빠지는 경우가 있는데, 이 경우 인덱스 스캔을 하는 것 보다는 FULL TABLE SCAN을 하는 것이 바람직함 : 인덱스 사용 시 하나의 Block을 하나의 I/O로 처리 : FULL TABLE SCAN 시 한 번의 I/O 때 마다 여러개의 데이터 Blocks를 처리 > I/O 횟수가 감소 2. 인덱스 사용이 불가능한 경우 1) NOT 연산자 사용 한 건을 제외하고 모둔 경우를 찾아야해서 비효율적 2) IS NULL/ IS NOT NULL 인덱스는 널 값을 저장하지 않아 어디에도 널이 존재하지 않음 3) 옵티마이저의 취사선택 : 옵티마이저의 자의적 판단에 의해서 인덱스를 사용할 수..
결합 인덱스 1. 인덱스 머지 VS. 결합인덱스 인덱스 머지 : 하나의 컬럼으로 구성된 인덱스가 하나의 테이블에 두개 이상이 있을 때, 두 인덱스를 동시에 사용하는 현상 결합인덱스 : 두 인덱스를 결합하여 동시에 일치하는 결과를 찾음 : 인덱스 머지로인한 비효율적인 측면을 해소 2. 결합인덱스의 구성 1) 결합인덱스 칼럼 선택 : WHERE 절에서 AND 조건으로 자주 결합되어 사용되면서 각 분포도 보다 두 개 이상의 칼럼이 결합될 때 분포도가 좋아지는 칼럼들 : 다른 테이블과 조인의 연결고리로 자주 사용되는 칼럼들 : 하나 이상의 키 칼럼 조건으로 같은 테이블의 칼럼들이 자주 조합될 때, 이러한 칼럼을 모두 결합 2) 결합인덱스의 칼럼 순서 결정 ① WHERE 절 조건에 많이 사용되는 칼럼 우선 ② E..
인덱스 1. 인덱스의 필요성 사용자가 인덱스를 사용하는 이유 : 데이터베이스에 저장된 자료를 더욱 빠르게 조회하기위해 인덱스를 생성 일반적으로, 인덱스는 테이블 전체 데이터 중 10~15% 이하의 테이블을 처리하는 경우에 효율적 2. B*Tree 구조 : 가장 많이 사용되는 인덱스의 구조/인덱스의 데이터 저장방식 : Root / Branch / Leaf Node * Branch 노드 : Leaf 노드에 연결되어있으며, 조회하려는 값이 있는 Leaf노드까지 도달하기 위해 비교/분기해야 될 값들이 저장됨 * Leaf 노드 = 인덱스 칼럼의 값(오름/내림 차순으로 Sort되어 저장됨) + ROWID(테이블에 있는 해당 row를 찾기위해 사용되는 논리적인 저장위치 정보) B*Tree 구조의 핵심은 Sort 1)..
옵티마이저 1. 옵티마이저의 개념 : 사용자가 실행한 SQL을 해석하고, 데이터를 추출을 위한 실행계획을 수립하는 프로세스 2. 옵티마이저의 종류 오라클: RBO/CBO (다른 DBMS는 CBO만 존재) 1) RBO(Rule Based Optimizer) : 15개의 순위가 매겨진 규칙 존재 : SQL에 대한 실행계획이 하나 이상일 경우, 순위가 높은 규칙 이용 : 수립된 실행계획이 예측 가능하여 개발자가 원하는 처리 경로로 유도하기 쉬움 2) CBO(Cost Based Optimizer) 자원사용을 최소화하여 데이터를 빨리 처리하는 데 목적 통계정보 : CBO의 성능을 최적의 상태로 유지시키기 위해서 테이블, 인덱스, 클러스터 등을 대상으로 통계정보를 생성함. (정기적으로 ANALYZE작업을 하는 것이..