예제를 통해 mysql에서 or 및 in의 효율성 분석

藏色散人
풀어 주다: 2021-09-25 17:13:07
앞으로
2315명이 탐색했습니다.

예제를 통해 mysql에서 or 및 in의 효율성 분석

mysql에서 or 및 in의 효율성

머리말

오늘 웹사이트 중단 문제가 발생했습니다. 이를 해결하는 데 몇 분이 걸렸는데, 예약된 스크립트에서 SQL을 찾았습니다. 매우 느립니다. DBA가 변경을 제안하여 효율성이 수백 배 향상되었습니다.

시나리오 설명

1. 두 테이블 연관 쿼리
2. table1의 데이터 양이 100만 개에 가깝습니다. table2의 데이터가 9백만 개에 가깝습니다
4. 쿼리 조건의 제목 필드가 색인화되지 않았습니다
5. 원본 쿼리 문

SELECT a.id as id FROM `table1`as a left join table2 as b on a.id=b.id WHERE b.title="衣服" or b.title="裤子" or b.title="帽子" limit 0,100
로그인 후 복사
6. 변환된 쿼리 문

SELECT a.id as id FROM `table1`as a left join table2 as b on a.id=b.id WHERE b.title IN ("衣服","裤子","帽子") limit 0,100
로그인 후 복사
변환 후 효율성

원본의 실행 시간 SQL은 5초, 변경 후 0.01초 밖에 걸리지 않습니다

이유

정보를 확인해 보니 데이터 양이 100만 개가 넘고 조건이 인덱싱되지 않은 경우 or의 쿼리 효율이 훨씬 낮습니다. in. or의 효율성은 O(n)인 반면, in의 효율성은 O(logn)입니다. n이 클수록 효율성 차이는 더욱 분명해집니다.

추천 학습: "

mysql 비디오 튜토리얼"

위 내용은 예제를 통해 mysql에서 or 및 in의 효율성 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!