cd database/대용량데이터베이스8 대용량 DB 12강 (해쉬조인, 리커시브 SQL) 1. 해쉬 조인 (Hash Join) A. 해시연산에 의해서 바로 자기가 있어야 할 위치를 지정해서 맵핑 후 데이터를 뽑아낸다. CPU속도만 좋다면 속도가 아주 빠르다. B. 가능한 데이터가 적은 테이블이 드라이빙 됨. C. 데이터가 작은 테이블과 큰 테이블을 JOIN 할 때 가장 좋은 퍼포먼스를 낸다. 2. 순환 관계의 처리 (1:M) A. 리커시브 모델 i. 구조(순환 관계)가 변경되어도 식별자는 변하지 않아 과거 데이터 변경이 불필요하다. ii. 사용이 약간 불편하며 숙달된 기술력이 필요 iii. 약간의 기술력이 필요함 (잘못 사용 시 수행속도가 저하된다.) 3. 오라클의 리커시브 SQL 지원 A. 구문 i. From 절에 하나의 테이블만 나옴. (자기 스스로 JOIN 되기 때문..) ii. WHE.. 2014. 5. 29. 대용량 DB 11강 (Join) (이번 동영상은 다시 보는 게 도움될 듯!) 1. Index range scan - 사각형 안의 쿼리의 실행계획을 생각해보자. Select custno, chuldate, custname From customer Y, chulgot X WHERE RTRIM(X.CUSTNO) = RTRIM(Y.CUSTNO) AND X.CHULDATE = ‘941130’ AND Y.NATION = ‘KOR' [답] Merge join(sort) Table Access by rowed chulgot Index range scan ch_chuldate Table access by rowed customer Index range scan cu_nation 2. 액세스 경로의 결정 - 아래 세가지 조건을 고려. n 상수값을 받을 .. 2014. 5. 23. 대용량 DB 10강 (인덱스 , 조인) 1. 추가된 인덱스가 미치는 영향 l SELECT * FROM TAB1 WHERE A = ‘10’ AND B = ‘941005’ AND C = ‘123’ - IDX1 : AB , IDX2 : C 가 있다면, 결합인덱스인 IDX1를 탄다. 여기서, IDX1에 ABD로 변경하면 다른 부분에 영향을 미침 l 분포도 차이가 심한 경우 - 예를 들어, corp_id의 값이 삼성 SDS로 90%로 이루어져 있다면, 삼성 SDS는 값을 null로 가져가라. 그리고 아래의 쿼리로 변경. SELECT nvl(corp_id , ‘100’) corp_id FROM XX WHERE :V1 = ‘100’ AND CORP_ID is null UNION ALL SELECT * FROM XX WHERE :V1 ‘100’ AND CO.. 2014. 5. 16. 대용량 DB 9강 정리 (인덱스 선정) 1. 추가된 인덱스 컬럼의 역할 l Select * from tab1 where A = ‘2’ and C = 51 i. A컬럼만 인덱스가 있다면 : A의 조건에 만족하는 rowid 여러 건 확인 후 table access 함 ii. A, B, C 컬럼 결합 인덱스가 있다면 : A, C 스캔해서 나오는 1건만 조회 è 불필요한 table access를 줄일 수 있다.(성능을 좌우하는 single block I/O를 줄임) 2. 결합인덱스 컬럼 순서 결정 (위-아래 순으로 우선순위) l 조건이 항상 나오는 컬럼인 경우 그 컬럼이 앞으로 나와야 한다. l 항상 ‘=’로 조건이 나오는가? Like나 between 조건이 들어가는 경우 (선분조건) 는 앞에 나와서는 안 된다. (뒤의 컬럼이 아무리 좋아도 테이블을.. 2014. 5. 14. 이전 1 2 다음