MySql 은 not in 을 어떻게 사용 하여 최적화 합 니까?

최근 항목 에서 select 로 조회 할 때 not in 을 사용 하여 사용 할 수 없 는 메 인 키 id 를 제거 합 니 다.처음에 사용 한 sql 은 다음 과 같 습 니 다.

select 
  s.SORT_ID,
  s.SORT_NAME,
  s.SORT_STATUS,
  s.SORT_LOGO_URL,
  s.SORT_LOGO_URL_LIGHT
from SYS_SORT_PROMOTE s
  WHERE
    s.SORT_NAME = '    '
    AND s.SORT_ID NOT IN ("SORTID001")
  limit 1;
표 의 데이터 가 비교적 많 을 때 이 sql 의 집행 시간 이 비교적 길 고 집행 효율 이 낮다.인터넷 에서 자 료 를 찾 으 면 left join 으로 최적화 할 수 있다 고 한다.최적화 된 sql 은 다음 과 같다.

select 
  s.SORT_ID,
  s.SORT_NAME,
  s.SORT_STATUS,
  s.SORT_LOGO_URL,
  s.SORT_LOGO_URL_LIGHT
from SYS_SORT_PROMOTE s
left join (select SORT_ID from SYS_SORT_PROMOTE where SORT_ID=#{sortId}) b
on s.SORT_ID = b.SORT_ID
  WHERE
    b.SORT_ID IS NULL
    AND s.SORT_NAME = '    '
  limit 1;
위 SORTID=\#{sortId}의 sortId 가 SORT 로 전 달 됩 니 다.ID 이 필드 에서 제외 해 야 할 Id 값 입 니 다.왼쪽 외 에 연결 할 때 선택 할 필드(SORTID)연결 조건 으로 마지막 으로 where 조건 에 b.SORTID IS NULL 은 표 의 관련 데 이 터 를 선별 하면 됩 니 다.
여기에 수필 을 써 서 최적화 과정 을 기록 하 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기