SQLD
-
[SQL 튜닝] PK와 Unique Index의 차이점에 대한 자세한 설명 (펌)SQLD/SQL 튜닝 2022. 1. 26. 20:17
[요약] 1. PK로 설정하면 PK constaint에 의해 Unique Index 와 Not null 제약조건이 생성됨 PK는 인덱스처럼 B-tree 자료구조를 사용하지 않는다. 라는 주장에 반대되는 자료 2. 일반적인 Index 말고, PK 설정시, 옵티마이저에게 더 많은 정보를 제공함으로써 더 좋은 실행계획을 만드는데 일조하게 되고 따라서 더 빨라지는 경우가 많을 것. 많은 개발자들이 PK는 왠지 부하를 준다는 잘못된 선입견을 가지고 있고 따라서 PK 대신 Unique Index를 사용하는 것으로 알고 있는데 매우 그릇된 관행(?)이라고 생각한다고 조시형님은 답변함 3. PK는 옵티마이저에게도 정보를 제공하지만, 사용자에게도 document 역할을 함. 4. PK는 논리적개념, PK Constrai..
-
[SQL] 슈퍼-서브타입 모델의 물리모델 결정기준 (feat. JPA)SQLD/데이터모델링의 이해 2022. 1. 14. 21:01
DB 모델링기법 중에 슈퍼-서브타입 모델링(엔티티가 상속관계를 이룸)이라는게 있는데, 논리모델은 같지만 실제 물리모델은 RollUp, RollDown, Identity 중 하나로 구현한다. # 논리모델 * 전구모양의 x는 exclusive (x가없으면 inclusive) # RollUp (Single-Type) 하나의 테이블로 통합 # RollDown (Plus-Type) 슈퍼타입을 각각의 서브타입에 추가하여 분리 # Identity (One-To-One Type) 슈퍼타입과 각각의 서브타입을 테이블로 생성 # 슈퍼-서브타입 모델 비교 # 물리모델 결정기준 데이터의 양과 트랜잭션의 유형에 따라 선택한다. 1. 개별로 발생되는 경우가 많은 서비스는 Identity로 ! 위의 논리모델에서 예를 들자면, 아이..
-
Oracle SQL) 계층형 쿼리와 셀프조인SQLD/SQL 기본과 활용 2020. 9. 1. 16:54
# 계층형 데이터 - 동일 테이블에 계층적으로 상위 및 하위 데이터가 포함된 데이터 ex) EMP 테이블의 사원번호 및 그 사원의 관리자번호 # 셀프조인 - FROM 절에 동일 테이블을 2번이상 기술하는 조인 (재귀호출) # 순방향 전개 - 자식 노드로 전개 # 역방향 전개 - 부모 노드로 전개 # 리프데이터 - 자식노드가 존재하지 않는 데이터 # 루트데이터 - 계층형데이터에서 최상위에 위치하는 데이터 (순방향이냐 역방향이냐에 따라 루트가 달라짐) # 사이클 - 데이터 전개 중 이미 나타났던 동일한 데이터가 다시 나타날때, 이것을 사이클이 발생했다고 지칭하며, 런타임 오류를 발생시킨다. # 계층형 쿼리(질의) (Hierarchical Query) # Oracle # Syntax SELECT ... FRO..
-
SQL) Top N 쿼리SQLD/SQL 기본과 활용 2020. 9. 1. 16:35
# Top N 쿼리 : 상위 n개의 데이터를 추출하는 쿼리 1. Oracle # ROWNUM Pseudo Column - WHERE 절에서 행의 갯수를 제한 - WHERE과 ORDER BY를 같이 쓰면 WHERE가 먼저 순서이므로, 무작위 데이터3개 중 정렬된 데이터가 출력됨. (상위 몇개를 뽑는 Top N 쿼리가 아님) - ROWNUM으로 Top N 쿼리를 만드려면 인라인뷰로 처리할 것 SQL> SELECT ENAME, SAL FROM (SELECT ENAME,SAL FROM EMP ORDER BY SAL DESC) WHERE ROWNUM SELECT TOP(3) [PERCENT] # 키워드 없을시 탑2개, 키워드 있을시 탑 2퍼센트 데이터 출력 [WITH TIES] # 동일 수치의 데이터는 추가 출력..
-
SQL) WINDOW 함수(2) -그룹별 행 순서함수, 그룹별 비율함수SQLD/SQL 기본과 활용 2020. 8. 31. 19:30
# 그룹별 행 순서함수 1. FIRST_VALUE, LAST_VALUE 함수 (SQL Server 지원 안함) - 파티션별 윈도우에서 가장 먼저 나온 값 리턴 - 같은값에 대해선 윈도우에 먼저나온 데이터가 우선순위로 취급 # FIRST VALUE & LAST VALUE SQL> SELECT DEPTNO, ENAME, SAL ,FIRST_VALUE(ENAME) OVER (PARTITION BY DEPTNO ORDER BY SAL DESC ROWS UNBOUNDED PRECEDING ) AS ENAME_FV ,LAST_VALUE(ENAME) OVER (PARTITION BY DEPTNO ORDER BY SAL DESC ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING )..
-
SQL) WINDOW 함수(1) -그룹내 순위함수,일반 집계함수SQLD/SQL 기본과 활용 2020. 8. 31. 17:23
# WINDOW 함수 ( = RANK, ANALYTIC 함수) # WINDOW FUCTION SYNTAX - OVER 키워드가 필수로 포함되어야 한다. - SQL Server에서는 OVER 절 내에 ORDER BY절, WINDOWING절 사용 불가 # []는 옵션(선택사항) SELECT WINDOW_FUCNTION(arguments) OVER ([PARTITION BY 칼럼] [ORDER BY 절] [WINDOWING 절]) FROM 테이블명; # WINDOWING 절 # BETWEEN 사용 타입 ROWS | RANGE BETWEEN UNBOUNDED PRECEDING | CURRENT ROW | VALUE_EXPR PRECEDING/FOLLOWING AND UNBOUNDED PRECEDING | CUR..
-
SQL) ROLLUP, CUBE 함수에 대한 이해와 고찰SQLD/SQL 기본과 활용 2020. 8. 31. 16:20
# SQL 전문가 가이드만으로는 미천한 나의 머리가 따라가지 못했다. # ROLLUP 과 CUBE 함수의 작동원리가 너무 궁금한 나머지 구글링과 직접실험을 하여 얻은 지식을 여기에 공유하고자 한다. 1. ROLLUP 작동원리 위 그림 한장이면 충분하다고 본다. 그래도 이해가 되지않으면 밑의 CUBE 함수 작동원리 예제를 보며, 출력 값을 자세히 들여다보고, 실제로 ROLLUP 함수를 DB에서 돌려본다면 이해가 빠를것이다. 출처에 표기된 사이트의 포스팅도 참고하면 이해에 도움이 될 것이다. 2. CUBE 함수 작동원리 - SQL 전문가 가이드에서는 칼럼의 수가 N이라고 할때 2의 N제곱 LEVEL의 Subtotal을 생성한다고 한다. - 책에서 등장한 LEVEL 에 대한 예시와 설명은 단 한번 등장한다. ..
-
스칼라 서브쿼리(Scalar SubQuery), 인라인 뷰(Inline View), 뷰(View)SQLD/SQL 기본과 활용 2020. 8. 28. 19:10
1. 스칼라 서브쿼리(Scalar SubQuery) - 1 row, 1 column 만 리턴하는 서브쿼리 - 칼럼을 사용할 수 있는 대부분의 곳에서 사용 가능 SQL> SELECT PLAYER_NAME, HEIGHT ROUND((SELECT AVG (X.HEIGHT) FROM PLAYER X WHERE X.TEAM_ID = P.TEAM_ID),2) AS AVG_HEIGHT FROM PLAYER P; # 실행결과 PLAYER_NAME HEIGHT AVG_HEIGHT ------------------------------------------------------- 밀리토 169 177.89 스털링 178 180.01 고종수 188 175.66 김정환 170 179.99 노홍철 180 181.23 이승우 1..