본문 바로가기

전체 글262

MySQL8 - Semi Join 과 Anti Join - 안티조인 세미조인 MySQL 8.0에서 SemiJoin 과 AntiJoin에 대해서 확인해보도록 하겠습니다.          Contents [숨기기]테스트 환경 과 샘플 데이터Semi Join 과 Anti JoinReference테스트 환경 과 샘플 데이터포스팅의 테스트 환경 버전 정보와 샘플 데이터 정보입니다.• Version : MySQL 8.0.25• Sample 데이터: dept_emp 테이블과 departments 테이블을 사용하였고 아래 github 에서 다운로드 받을 수 있습니다. datacharmer/test_db: A sample MySQL database with an integrated test suiteA sample MySQL database with an integrated test suite,.. 2024. 9. 12.
DBMS_XPLAN.DISPLAY_CURSOR 결과 보는 법 출처 : http://www.bysql.net/index.php?document_srl=181711. 10046 Event가 갖지 못한 DBMS_XPLAN.DISPLAY, DBMS_XPLAN.DISPLAY_CURSOR의 장점Query Block Name / Object Alias : 쿼리 블록 정보Outline Date : 오라클 내부 HintPredicate Information : Access 조건 및 조인 조건, Filter 조건Column Projection Information : Operation Id 별로 Select된 컬럼 정보Format : 자신에게 맞는 Format 설정이 자유로움2. DBMS_XPLANplan_table에 저장된 실행계획을 출력. EXPLAIN PLAN 구문보다 확장된.. 2024. 9. 12.
접근 순서를 결정하는 힌트절 ? ORDERED, LEADING 동일한 쿼리라도 인덱스 생성 포인트에 따라서 테이블 접근 방향은 가변적이다.따라서 최소한의 코스트가 소요되는 접근 방향을 결정하고 그에 따른 필요한 위치에 인덱스를 생성한다면, 옵티마이저도 우리와 동일한 판단(플랜)을 할 것이다. 하지만 우리가 접한느 대부분의 경우는 이처럼 단순하지는 않다.  위의 그림처럼 1번, 2번, 3번, 4번 모든 컬럼 위치에 인덱스가 존재한다면 테이블의 접근 순서는 명확하지 않다. 고객->주문 방향으로 접근도 가능하고 주문->고객 방향으로 접근도 가능하다.양 방향 접근이 가능한 것이다. 물론 옵티마이저는 수집한 통계정보에 근거하여 가장 최소한의 노력이 드는 방향을 결정하려 할 것이다. 하지만 항상 올바른 결정만 하는 것은 아니다. 만약 우리가 판단하는 접근 방향과 옵티마이저가 .. 2024. 9. 12.
[TIL] MySQL Hint Hint아래 Hint에 대한 모든 내용들은 MySQL을 기준으로 작성되었음.힌트는 옵티마이저의 실행 계획을 원하는대로 바꿀 수 있게 해준다.옵티마이저라고 반드시 최선의 실행계획을 수립할 수는 없기 때문에, 조인이나 인덱스의 잘못된 실행 계획을 개발자가 직접 바꿀 수 있도록 도와주는 것이 힌트이다.힌트의 문법이 올바르더라도 힌트가 반드시 받아 들여지는 것은 아니며, 옵티마이저에 의해 선택되지 않을 수도 있고 선택될 수도 있다.Hint는 크게 2가지로 구분할 수 있다.1. 옵티마이저 힌트2. 인덱스 힌트옵티마이저 힌트와 인덱스 힌트는 서로 다르며, 함께 사용할 수도 있고 별도로 사용할 수도 있다.옵티마이저 힌트옵티마이저를 제어하는 방법 중 하나는, optimizer_switch 시스템 변수를 설정하는 것 이.. 2024. 9. 12.
인라인뷰 그리고 페이징 데이터베이스 와 SQL 에 대해서 너무 지식이 부족하여서 이번 기회에 공부를 제대로 해보려고 합니다.먼저 그 생각을 가지게 된 계기인 인라인뷰에 대해서 공부해보려고 합니다.인라인뷰서브쿼리의 일종으로 서브쿼리가 FROM 절에서 안에서 사용하는 경우, 해당 서브쿼리를 '인라인뷰'라고 합니다.서브쿼리의 결과가 하나의 테이블에 대한 View 처럼 사용된다고 해서 인라인뷰라고 합니다.SELECT member.mb_id, member.address FROM (SELECT * FROM member_table) AS member위에 쿼리문은 의미없는 인라인뷰 쿼리문이긴 한데 이런식으로 FROM 절 안에 쓰이는 서브쿼리가 바로 인라인뷰 입니다.말만 거창하지 별거 없습니다.그렇다면 이 인라인뷰를 굳이 .. 2024. 9. 12.
[SQLP] SQLP 44회 실기 풀이 SQLP 실기 기출문제 풀이(44회)※ 시험후기들을 참고해 복기한것으로 틀린부분이 있을 수 있음.※ 실제 시험에는 ERD와 ROW SOURCE GENERATION 정보가 같이 나왔음.1번(실기1) 아래와 같이 테이블구조가 있는데 기존SQL를 개선하고, 필요시 인덱스를 설계변경 할 것불필요하게 인덱스 변경시 감점[테이블 정보]* BOARD : #BRD_ID, BRD_NM, ...* ARTICLE : #ART_SN, ART_TIL, ART_CONT, MBR_NO, BRD_ID, REG_DT, ...* MEMBER : #MBR_NO, MBR_NM, ...[인덱스]BOARD_PK : BRD_IDARTICLE_PK : ART_SNMEMBER_PK : MBR_NOARTICLE_X01 : BRD_IDARTICLE_.. 2024. 9. 12.