분류 전체보기
-
데이터 모델링 - 기준 엔터티카테고리 없음 2024. 6. 26. 14:04
1. 낱개의 물건 & 물건의 상징 기준 엔터티는 크게 두 가지로 구분할 수 있다. 기준 정보 관리 - 환율, 코드 데이터 기본 정보 - 과목, 상품 (실체 엔터티와 특성이 유사함!) 둘 다 업무의 기준이 되는 엔터티로서, 업무를 수행할 때 참조되기 때문에 참조 엔터티라고도 합니다. 기준 엔터티는 다른 엔티에서 참조해서 사용한다 (특히 행위 엔터티에서 많이 참조한다) 여기서 책 엔터티는 낱권의 책을 나타내므로, 실체이다. 도서 엔터티는 누가 썼고, 어디에서 출판했는지, 가격이 얼마인지 책의 개념을 상징할 뿐 낱권 의미는 아니다. 만약 데이터 모델링 노트 책을 3만권 출판했고, 그 중 도서관에 세 권이 있다면, 도서 엔터티에는 한 개의 인스턴스가 존재하고, 책 엔터티에는 세 개의 인스턴스가 존재한..
-
데이터 모델링 - 실체 엔터티DataBase/SQL 2024. 6. 26. 13:49
1. 실체 엔터티 정의 실체 엔터티는 실체라는 단어에 답이 담겨있듯 실체의 물체나 외형에 실상 즉, 실제로 보이는 것을 나타내는 데이터를 관리하는 엔터티가 실체 엔터티다. (데이터가 만질 수 있는 것을 타나내면 실체 엔터티다) 데이터 분류 1. 보이는 것, 만질 수 있는 것 : 실체 2. 보이지 않는 것, 추상적인 것 2.1 연상되는 것 : 주문,강의, 대출 (주로 어떤 행위) 2.2 연상되지 않는 것 (환율, 과목, 상품 유형) 실체 엔터티는 만질 수 있는 데이터를 관리, 주의할 점은 실체의 존재와 연관된 본질적인 데이터를 관리한다는 것 즉, 홍길동이란 실체 의미 홍길동의 주문, 불평 등은 의미하지 않는다. 2. 실체 엔터티가 중요한 이유 모델 구조적으로 실체 엔터티가 ..
-
SQL BOOSTER - HASH JOIN과 성능DataBase/SQL 2024. 6. 24. 14:37
1. 대량의 데이터 처리 NL 조인은 많은 양의 데이터를 조인 처리하기에는 적합하지 않다. 그러므로 많은 양의 데이터를 조인하려면 머지 조인을 사용해야한다. 하지만, 머지 조인도 데이터를 정렬해야 하는 부담이 있다.이와 같은 단점을 해결할 수 있는 것이 해시 조인이다. 해시 조인은 해시 함수를 사용하기 때문에 CPU와 메모리에 추가적인 부하가 발생한다. 하지만 머지 조인에 비하면 월등한 성능을 가지고 있다. 대용량 데이터 조인은 해시 조인이 필수다. SELECT /*+ GATHER_PLAN_STATISTICS LEADING(T1) USE_MERGE(T2) */T1.CUS_ID, MAX(T1.CUS_NM) CUS_NM, MAX(T1.CUS_GD) CUS_GD, COUNT(*) ORD_CNT, SUM(T2..
-
SQL BOOSTER - MERGE 조인과 성능DataBase/SQL 2024. 6. 24. 11:18
1. 대량의 데이터 처리 머지 조인은 대량의 데이터를 조인할 때 적합하다. NL 조인과의 비교를 통해 머지 조인이 과연 대량 데이터 조인에 유리한지 살펴보자 여기서는 머지 조인의 성능 테스트를 위해 T_ORD_BIG 테이블을 사용한다.M_CUS와 T_ORD_BIG테이블을 NL조인하는 SQL이다. SELECT /*+ GATHER_PLAN_STATISTICS LEADING(T2) USE_NL(T1) FULL(T2) */ T1.CUS_ID, MAX(T1.CUS_NM) CUS_NM, MAX(T1.CUS_GD) CUS_GD, COUNT(*) ORD_CNT ,SUM(T2.ORD_AMT) ORD_AMT ,SUM(SUM(T2.ORD_AMT)) OVER() TTL_ORD_AMTFRO..
-
SQL BOOSTER - MERGEDataBase/SQL 2024. 6. 23. 16:10
1. MERGE란? 데이터 존재 여부에 따라 데이터를 INSERT하거나 UPDATE하는 경우가 많다. 이때 유용하게 사용할 수 있는 것이 MERGE이다. MERGE는 한 문장으로 INSERT와 UPDATE를 동시에 처리할 수 있다. 한 건의 데이터가 동시에 INSERT와 UPDATE되는 것은 아니다. 한 건의 데이터는 INSERT와 UPDATE 중 하나만 수행된다.MERGE 대상이 이미 존재하면 UPDATE, 대상이 존재하지 않으면 INSERT를 수행하는 방식이다. 예를 들어 고객 ID와 고객 정보를 외부에서 입력 변수로 받는다. 이때 같은 고객 ID가 이미 있으면, 고객 정보를 업데이트하고, 같은고객 ID가 없으면 신규 고객으로 등록한다. MERGE INTO M_CUS_CUD T1USING( S..
-
SQL BOOSTER - 서브쿼리 (WHERE)DataBase/SQL 2024. 6. 23. 15:33
1. WHERE절 단독 서브쿼리 서브쿼리는 WHERE 절에서도 단독으로 사용할 수 있다. 1.1 마지막 한 건 조회하기 SELECT * FROM T_ORD T1WHERE T1.ORD_SEQ = (SELECT MAX(A.ORD_SEQ) FROM T_ORD A); 위 SQL은 T_ORD 테이블을 두 번 사용하고 있다. SQL의 성능을 위해서는 테이블의 반복 출현을 줄여야한다. 따라서 위 SQL은 아래와 같이 사용하는 것이 성능 면에서 좀 더 유리할 수 있다. -- order by와 rownum 활용SELECT *FORM ( SELECT * FROM T_ORD T1 ORDER BY T1.ORD_SEQ DESC )AWHERE ROWNUM ORDER BY와 ROWNUM을 사용한 방법이다. ->..
-
SQL BOOSTER - 서브쿼리 (SELECT)DataBase/SQL 2024. 6. 23. 14:55
서브쿼리는 조인과 유사하면서도 조인보다 이해가 쉬운 장점이 있다. 서브쿼리를 익히기 전에, 서브쿼리는 성능이 좋지 못할 수 있다는 것을 알기 바란다.SQL의 실행계획이 특정된 방법으로 제약될 가능성이 있기 때문이다. 서브쿼리를 익힌 후에 가장 조심할 부분은 무분별한 서브쿼리 남발이다. 모든 조인을 서비쿼리로 해결하려고 해서는 절대 안된다. 성능에 영향을 주지 않는 범위에서 적절할게 사용해야 한다. > 서브쿼리는 사용 위치와 방법에 따라 다음 네 가지로 분류할 수 있다. - SELECT 절의 단독 서브쿼리- SELECT 절의 상관 서비쿼리- WHERE 절의 단독 서브쿼리- WHGER절의 상관 서브쿼리 > 메인 SQL과 상관없이 실핼 할 수 있으면 단독 서브쿼리, 메인 SQL에서 값을 받아 처리해야 하면..
-
SQL BOOSTER - CARTESIAN_JOIN카테고리 없음 2024. 6. 21. 11:09
1. CARTESIAN-JOIN 이해하기조인 조건이 없어 묻지마 조인을 처리한다. FROM 절에 테이블 A와 B가 있을 때 조인 조건을 주지 않으면 카테시안 조인이다. A의 첫번째 데이터는 B의 모든 데이터와 조인을 하게 된다. 두 번째 데이터도 마찬가지다. SELECT T1.CUS_GD, T2.ITM_TPFROM (SELECT DISTINCT A.CUS_GD FROM M_CUS A) T1, (SELECT DISTINCT A.ITM_TP FROM M_ITM A) T2CUS_GD의 데이터 집합 ITEM_TP의 데이터 집합 두 조인의 조건이 없으니 카테시안 조인을 수행 카테시안 조인이 사용되는 경우는 매우 드물다.. BI 환셩에서 분석차원 집합을 만들거나 시스템 오픈 전에 대량의 데스트 데이터 만들..