안녕하세요 mysql의 in 을 inner join으로 바꾸고 싶습니다.

조회수 377회

안녕하세요. 초보 개발자입니다.

현재 mssql 에서 mysql로 쿼리 컨버팅 작업 중에 있는데

비효율적인 쿼리가 많아 수정이 필요하다는 요청을 받고 고생 중에 있습니다..

본론으로 들어가자면

SELECT SQL_CALC_FOUND_ROWS * FROM 
(SELECT eq.*, ug.GROUP_NAME, 
/* 여기서부터 */
(SELECT cam_name FROM tbl_camera WHERE cam_id IN 
       (SELECT CAM_ID FROM tbl_cam_preset WHERE preset_id IN 
       (SELECT PRESET_ID FROM tbl_sensor_map WHERE EQUIPMENT_ID = eq.EQUIPMENT_ID))) CAM_NAME
 /* 여기까지 */
FROM tbl_equipment_info eq
        LEFT JOIN tbl_user_group ug ON eq.EQUIPMENT_GROUP = ug.GROUP_ID
        WHERE 1=1
...

위에 표시한 부분을 IN 대신 inner join을 사용하여 퍼포먼스를 증가시키고 싶은데, 어떻게 구성해야 할까요 ㅠㅠ?

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 그러니까 CAM_NAME이라는건 EQUIPMENT_ID에 해당하는 PRESET_ID에 해당하는 cam_id에 해당하는 모든 tbl_camera의 CAM_NAME이 된단 말인가요? 엽토군 2019.8.24 18:02
  • INNER가 아니라 LEFT JOIN으로 해야 결과가 일치하겠죠. 알 수 없는 사용자 2019.9.5 20:17

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)