MySql 은 not in 을 어떻게 사용 하여 최적화 합 니까?
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 은 표 의 관련 데 이 터 를 선별 하면 됩 니 다.여기에 수필 을 써 서 최적화 과정 을 기록 하 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SQLite는 if not exist와 유사한 기능을 구현합니다.보충: sqlite3에서 NOT IN 안 좋은 문제 sqlite3로 SQL을 익힐 때 헤아릴 수 없는 문제를 만났고 구글에서도 답을 찾지 못했다.마지막으로'우회'방식으로 공교롭게 이 문제를 해결했지만 원리가 무엇인지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.