반응형 SQL28 [SQL 튜닝] 실행계획 실행계획: 사용자가 sql을 실행하여 데이터를 추출하려고 할 때 옵티마이저가 수립하는 작업절차 1. sql 해석 2. 실행계획 수립 3. 실행 실행계획 확인 방법 1. explain plan : 실행계획만 확인 가능 2. set autotrace : 한 번의 명령으로 여러 개의 sql에 대한 실행계획을 바로 볼 수 있음 옵티마이저 : 사용자가 실행한 sql을 해석하고 데이터를 추출을 위한 실행계획을 수립하는 프로세스, 속도 결정함 종류 1. RBO : 초창기 버전 - 기본적으로 15개의 순위가 매겨진 규칙이 있음, 이를 기반으로 실행계획 수립 - 계획이 여러개면 순위가 높은 규칙 사용 RANK 1 Rowid에 의한 1 row 2 클러스터 조인 3 unique나 pk를 사용한 해시 클러스터 키 ... .... 2023. 9. 10. [2주차] SQL JOIN & 고급문법 JOIN 기본 문법 SELECT A.*, B.* FROM raw_data.table1 A ____ JOIN raw_data.table2 B --(INNER, FULL, LEFT, RIGHT, CROSS) ON A.key1 = B.key1 and A.key2 = B.key2 default: inner join INNER JOIN - 양쪽 테이블에서 매치가 되는 레코드들만 리턴함 - 양쪽 테이블의 필드가 모두 채워진 상태로 리턴됨 FULL JOIN - 왼쪽 테이블과 오른쪽 테이블의 모든 레코드들을 리턴함 - 매칭되는 경우에만 양쪽 테이블들의 모든 필드들이 채워진 상태로 리턴됨 LEFT JOIN - 왼쪽 테이블(Base)의 모든 레코드들을 리턴함 2. 오른쪽 테이블의 필드는 왼쪽 레코드와 매칭되는 경우에만 채.. 2023. 6. 12. [2주차] SQL 장단점 & 기본 문법 SQL 장점 - 빅데이터를 처리하기 좋다 -구조화된 데이터를 처리하는데 적합하다 -어떤 작업을 하는건지 파악하기쉽다 단점 -비구조화된 데이터 처리에는 좋지 않다 기억해야할 점 현업에서 깨끗한 데이터란 존재하지 않음 ●항상 데이터를 믿을 수 있는지 의심하기 ●실제로 레코드를 몇 개 살펴보는 것이 중요 데이터 일을 한다면 항상 데이터의 품질을 의심하고 체크 ● 중복된 레코드 체크 ● 최근 데이터의 존재 여부 체크 ● Primary key uniqueness가 지켜지는지 체크하기 ● 값이 비어있는 컬럼들이 있는지 테크 ● 위의 체크는 코딩의 단위 테스트로 만들어 쉽게 체크할 수 있다 기본 문법 다수의 SQL 문을 실행한다면 세미콜론으로 분리 필요 ex) SQL문1; SQL문2; SQL문3 주석 -- : 인라인.. 2023. 6. 12. [프로그래머스] SQL 문제풀이 - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/157339 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 .. 2023. 5. 14. [프로그래머스] MYSQL 문제풀이 - 입양 시각 구하기(1) https://school.programmers.co.kr/learn/courses/30/lessons/59412 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다. 첫 풀이 1. DATETIME에서 시간을 추출하여 GROUP BY 한다 2. 추출한 시간을 이용하여 9시에서 19시 사이를 구한다 SELECT CONVERT(substring(DATETIME,12,2),SIGNED INTEGER) as hou.. 2023. 5. 13. [프로그래머스] SQL 문제풀이 - 오랜 기간 보호한 동물(1) https://school.programmers.co.kr/learn/courses/30/lessons/59044 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다. 내 풀이 1. left join으로 왼쪽 테이블 중심으로 합친다 2. limit으로 출력개수를 제한한다 SELECT i.NAME,i.DATETIME from ANIMAL_INS i left join ANIMAL_OUT.. 2023. 4. 28. [프로그래머스] SQL 문제풀이 - 조건에 맞는 사용자와 총 거래금액 조회하기 https://school.programmers.co.kr/learn/courses/30/lessons/164668 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총거래금액을 기준으로 오름차순 정렬해주세요. 첫 풀이 1. 서브 쿼리를 만들어 판매완료된 상품들을 추출한다 2. 게시판 테이블과 유저 테이블을 id 기준으로 join 한다 3. 아이디로 그룹화.. 2023. 4. 27. [프로그래머스] SQL 문제풀이 - 조건에 부합하는 중고거래 댓글 조회하기 https://school.programmers.co.kr/learn/courses/30/lessons/164673 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성해주세요. 결과는 댓글 작성일을 기준으로 오름차순 정렬해주시고, 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬해주세요. 첫 풀이 1. 두 테이블을 조인한다 2. 날짜 기.. 2023. 3. 13. [프로그래머스] SQL 문제풀이 - 재구매가 일어난 상품과 회원 리스트 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/131536 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요. 첫 풀이 1. 회원 ID와 재구매한 상품 ID로 그룹을 묶는다 2. 재구매한 회원을 찾기 위해 having으로 중.. 2023. 2. 9. 이전 1 2 3 4 다음 728x90