BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT
최신 리포트 다운로드 지금 바로 문의하기
BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT
최신 리포트 다운로드 지금 바로 문의하기
BESPIN Tech Blog
BESPIN Tech Blog
  • Tech
    • CSP
      • AWS
      • GCP
      • NCP
    • Cloud
      • Migration
      • LZ, Control Tower
      • Backup
      • Monitoring
      • Container
    • Infra
      • OS
      • Middleware
    • Data
      • RDB
      • Big Data Platform
    • Application
      • CI/CD
  • Trend
  • IT
  • Contact US
TECHRDBData

[MySQL] Mysql Lateral Query

by 형래 김 2023년 07월 21일
2023년 07월 21일
19

안녕하세요 오늘은 베스핀글로벌 D&A실 왕승준님이 작성해 주신 Mysql Lateral Query에 대해 알아보겠습니다 궁금하신 부분이 있으시면 댓글을 달아주세요 🙂

— Maria -> Mysql Explain 변경점

Maria에선 자동으로 외부 조인 조건을 인라인뷰로 가져와 참조 가능하나 My는 해당 기능을 지원하지 않음.
Emart Smartorder Service Maria -> Mysql8.0으로 마이그레이션 진행하면서 생긴 이슈 공유 

[AS – IS]

  FROM
                XX_TRANS_MST TRANS,
                XX_PRCHS_MST MST left outer join XX_CANCEL_HISTORY HIS on MST.PRCHS_SEQ = HIS.PRCHS_SEQ   
                XX_PRCHS_DTL DTL,
                XX_SO_PAYMENT_DTL PAY,
                (
                 SELECT
                      TSPD.PRCHS_SEQ
                      , REPLACE(SUM(PLU_PRICE * QTY), ‘,’, ”)AS ORDER_AMT
                 FROM
                     XX_PRCHS_DTL TSPD                                        
                  GROUP BY
TSPD.PRCHS_SEQ
) SRC
WHERE
TRANS.TRANS_SEQ = MST.TRANS_SEQ
AND MST.PRCHS_SEQ = DTL.PRCHS_SEQ
AND MST.PRCHS_SEQ = SRC.PRCHS_SEQ
AND MST.PRCHS_SEQ = PAY.PRCHS_SEQ
AND MST.PAYMENT_NAME IS NOT NULL

id|select_type|table     |partitions|type  |possible_keys                                          |key                            |key_len|ref                        |rows  |filtered|Extra                                       |
--+-----------+----------+----------+------+-------------------------------------------------------+-------------------------------+-------+---------------------------+------+--------+--------------------------------------------+
 1|PRIMARY    |<derived2>|          |ALL   |                                                       |                               |       |                           |     8|    12.5|Using where                                 |
 2|DERIVED    |TRANS     |          |ref   |PRIMARY,XX_trans_mst_idx01                             |XX_trans_mst_idx01             |603    |const                      |     2|   100.0|Using index; Using temporary; Using filesort|
 2|DERIVED    |MST       |          |ref   |PRIMARY,XX_prchs_mst_idx01,XX_prchs_mst_PRCHS_SEQ_IDX  |XX_prchs_mst_idx01             |93     |smart_order.TRANS.TRANS_SEQ|     1|     9.0|Using where                                 |
 2|DERIVED    |HIS       |          |ref   |XX_cancel_history_PRCHS_SEQ_IDX                        |XX_cancel_history_PRCHS_SEQ_IDX|63     |smart_order.MST.PRCHS_SEQ  |     1|   100.0|Using where                                 |
 2|DERIVED    |PAY       |          |eq_ref|XX_so_payment_dtl_idx01,XX_so_payment_dtl_PRCHS_SEQ_IDX|XX_so_payment_dtl_PRCHS_SEQ_IDX|93     |smart_order.MST.PRCHS_SEQ  |     1|   100.0|Using where                                 |
 2|DERIVED    |<derived3>|          |ref   |<auto_key0>                                            |<auto_key0>                    |93     |smart_order.MST.PRCHS_SEQ  |    10|   100.0|                                            |
 2|DERIVED    |DTL       |          |ref   |XX_prchs_dtl_idx01                                     |XX_prchs_dtl_idx01             |93     |smart_order.MST.PRCHS_SEQ  |     2|   100.0|                                            |
 3|DERIVED    |TSPD      |          |index |XX_prchs_dtl_idx01                                     |XX_prchs_dtl_idx01             |99     |                           |210540|   100.0|                                            |
 

[TO-BE]

  FROM
                XX_TRANS_MST TRANS,
                XX_PRCHS_MST MST left outer join XX_CANCEL_HISTORY HIS on MST.PRCHS_SEQ = HIS.PRCHS_SEQ   
                XX_PRCHS_DTL DTL,
                XX_SO_PAYMENT_DTL PAY,
      LATERAL         (
                 SELECT
                      TSPD.PRCHS_SEQ
                      , REPLACE(SUM(PLU_PRICE * QTY), ',', '')AS ORDER_AMT
                 FROM
                     XX_PRCHS_DTL TSPD                                        
     WHERE MST.PRCHS_SEQ = TSPD_PRCHS_SEQ
                  GROUP BY
TSPD.PRCHS_SEQ
) SRC
WHERE
TRANS.TRANS_SEQ = MST.TRANS_SEQ
AND MST.PRCHS_SEQ = DTL.PRCHS_SEQ

AND MST.PRCHS_SEQ = SRC.PRCHS_SEQ <- 불필요 제거
AND MST.PRCHS_SEQ = PAY.PRCHS_SEQ
AND MST.PAYMENT_NAME IS NOT NULL

lateral 과 where절에 있던 조인조건을 안에 기술함으로서 참조가능

 id|select_type      |table     |partitions|type  |possible_keys                                          |key                            |key_len|ref                        |rows|filtered|Extra                                       |
--+-----------------+----------+----------+------+-------------------------------------------------------+-------------------------------+-------+---------------------------+----+--------+--------------------------------------------+
 1|PRIMARY          |<derived2>|          |ALL   |                                                       |                               |       |                           |   2|    50.0|Using where                                 |
 2|DERIVED          |TRANS     |          |ref   |PRIMARY,XX_trans_mst_idx01                             |XX_trans_mst_idx01             |603    |const                      |   2|   100.0|Using index; Using temporary; Using filesort|
 2|DERIVED          |MST       |          |ref   |PRIMARY,XX_prchs_mst_idx01,XX_prchs_mst_PRCHS_SEQ_IDX  |XX_prchs_mst_idx01             |93     |smart_order.TRANS.TRANS_SEQ|   1|     9.0|Using where; Rematerialize (<derived3>)     |
 2|DERIVED          |PAY       |          |eq_ref|XX_so_payment_dtl_idx01,XX_so_payment_dtl_PRCHS_SEQ_IDX|XX_so_payment_dtl_PRCHS_SEQ_IDX|93     |smart_order.MST.PRCHS_SEQ  |   1|   100.0|Using where                                 |
 2|DERIVED          |HIS       |          |ref   |XX_cancel_history_PRCHS_SEQ_IDX                        |XX_cancel_history_PRCHS_SEQ_IDX|63     |smart_order.MST.PRCHS_SEQ  |   1|   100.0|Using where                                 |
 2|DERIVED          |DTL       |          |ref   |XX_prchs_dtl_idx01                                     |XX_prchs_dtl_idx01             |93     |smart_order.MST.PRCHS_SEQ  |   2|   100.0|                                            |
 2|DERIVED          |<derived3>|          |ref   |<auto_key0>                                            |<auto_key0>                    |93     |smart_order.MST.PRCHS_SEQ  |   2|   100.0|                                            |
 3|DEPENDENT DERIVED|TSPD      |          |ref   |XX_prchs_dtl_idx01                                     |XX_prchs_dtl_idx01             |93     |smart_order.MST.PRCHS_SEQ  |   2|   100.0|                                            |

감사합니다 🙂

문의: info@bespinglobal.com | 대표번호: 02-1668-1280

관련

mysqllateralExplainMariaDBMySQL 8.0

HOT Trend

Recent Posts

  • 딜로이트도, 맥킨지도, 베스핀글로벌도: AI 에이전트로 일 바꾸는 시대

    2025년 07월 04일 클라우드베스핀글로벌clouddata데이터AI인공지능HelpNow AIbespinglobalAI에이전트helpnow업무자동화딜로이트
  • ⚔️데이터센터에서 시작된 전쟁? 요즘 뜨는 AIDC 개념부터 트렌드까지!

    2025년 06월 27일 클라우드clouddata데이터AI데이터센터클라우드 데이터센터bespinglobalAIDCAI 인프라베스핀글로벌
  • 구글부터 엔비디아까지, 빅테크 기업들의 AI 전략 최신본📖

    2025년 06월 20일 cloud베스핀글로벌클라우드data데이터AI구글마이크로소프트엔비디아AI에이전트google I/ONVIDIA GTC 2025Microsoft build 2025
  • AI를 연결한다고? 업계가 주목하는 ‘MCP’ 알아보기🔍

    2025년 06월 13일 베스핀글로벌클라우드cloudAIMCP
  • [WhaTap] RDS Failover/Reboot 관제 2 – RDS Failover

    2025년 05월 30일 RDSRDS FailoverRebootFailoverbespin global

베스핀글로벌은 모든 기업의 AI 혁신을 실현하기 위해, 세상에서 가장 혁신적이고 자동화된 AI 서비스와 솔루션을 만들어갑니다.
상호 : 베스핀글로벌 주식회사 ㅣ 대표자명 : 김써니, 허양호 ㅣ 사업자등록증번호 : 638-87-00223 ㅣ 통신판매번호 : 2019-서울서초-0347 ㅣ 대표전화 : 1668-1280
사업장주소지 : 서울특별시 서초구 강남대로 327, 13,14,15,16층(서초동,대륭서초타워) ㅣ 이메일 : info@bespinglobal.com ㅣ 개인정보 처리방침 ㅣ 개인정보 처리방침 안내

© 2026 BESPIN GLOBAL, All Rights Reserved.

BESPINGLOBAL
패밀리 사이트
China MEA SEA US

BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT