Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20180609 sql presentation

334 views

Published on

2018/06/09 한빛 공감세미나에서 발표한 자료

Published in: Technology
  • Be the first to comment

  • Be the first to like this

20180609 sql presentation

  1. 1. 나라면 데이터를 어떻게 처리할까? - 옵티마이저 입장에서 SQL 처리하는 방식으로…… • 자바카페 & 저의 소개 • 옵티마이저란? • 그룹함수 사용 • 인덱스 + 컬럼가공 • 마치며.. 정재욱
  2. 2. 자바카페와 발표자 소개 • 스터디를 위해 모인 사람들!!! - offline으로 만나서 스터디를... - 월마다 정기회의도 하고~ - onoffmix or facebook을 통해 공지 - 공식/비공식 진행 - java에서 다양한 관심 분야로~ 저의 2012년 첫 스터디 모임 그룹 2012년 3월 10일 첫 스터디 모임 OT 참석
  3. 3. Optimizer란? <도서관> <임시보관소> <경비초소>
  4. 4. 그룹함수 사용에서.. (1) SELECT B.색이름 , COUNT(*) AS 건수 FROM 색깔상자 A , 색코드표 B WHERE B.색ID = A.색ID GROUP BY B.색이름 (2) SELECT B.색이름 , A.건수 FROM ( SELECT 색ID , COUNT(*) AS 건수 FROM 색깔상자 GROUP BY 색ID ) A , 색코드표 B WHERE B.색ID = A.색ID (3) SELECT (SELECT 색이름 FROM 색코드표 WHERE 색ID = A.색ID) AS 색이름 , COUNT(*) AS 건수 FROM 색깔상자 A GROUP BY 색ID << 색깔상자에서 색 칠해야 하는 띠들이 얼마나 있는지 확인해야 하는 쿼리 >>
  5. 5. 그룹함수 사용에서.. 색깔상자 색코드표 A01 빨간색 A02 파란색 A03 초록색 … …
  6. 6. A01 그룹함수 사용에서.. A01 A01 A03 A02 A01 (1)번 SQL이 처리하는 방식
  7. 7. A01 A02 그룹함수 사용에서.. A01 A01 A03 A03 A03 A02 A02 A01 A01 (2, 3)번 SQL이 처리하는 방식
  8. 8. 인덱스는.. 판매날짜 상품ID 20180601 P010492 20180601 P020421 20180602 P011123 20180602 P011234 20180602 P015236 20180603 P382733 …. …. SELECT * FROM 판매내역 WHERE 판매날짜 = '20180609' AND 상품ID LIKE 'P091%' SELECT * FROM 판매내역 WHERE 판매날짜 BETWEEN '20180601' AND '20180609' AND 상품ID = 'P09131' 상품ID 판매날짜 P010492 20180601 P011123 20180602 P011234 20180602 P015236 20180602 P016784 20180607 P020421 20180601 …. …. SELECT * FROM 판매내역 WHERE 판매날짜 IN ( '20180601' , '20180602' , '20180603' , '20180604' , '20180605' , '20180606' , '20180607' , '20180608' , '20180609' ) AND 상품ID = 'P09131'
  9. 9. WHERE 컬럼 사용에 주의할 점.. SELECT * FROM 판매내역 WHERE TO_CHAR(판매날짜, 'YYYYMMDD') = '20180609' AND 상품ID LIKE 'P091%' SELECT * FROM 판매내역 WHERE 판매날짜 = '20180609' AND SUBSTR(상품ID, 1, 4) = 'P091' SELECT * FROM 판매내역 WHERE 판매날짜 = TO_DATE('20180609' , 'YYYYMMDD') AND 상품ID LIKE 'P091%' SELECT * FROM 판매내역 WHERE 판매날짜 = '20180609' AND 상품ID LIKE 'P091%' (1) CHARACTER < NUMBER (2) CHARACTER < DATE '1111'  TO_NUMBER('1111') '20180609'  TO_DATE('20180609', 'YYYYMMDD')
  10. 10. 출처 • 2012년 사진첩(발표자) • 구글에 이미지 명칭 검색(도서관, 움막집, 초소 등) 알아두면 도움이 될 용어들 • Scalar Sub-query, In-line view Sub-query, Sub-query • 부분범위 vs. 전체범위 처리 • Nested loop, Hash, (Sort) Merge • Random I/O

×