[SQL] MySQL의 또는 일반적으로 SQL에서 BETWEEN과 IN 사이의 성능 차이가 있나요?
SQLMySQL의 또는 일반적으로 SQL에서 BETWEEN과 IN 사이의 성능 차이가 있나요?
나는 자동 증가 정수의 주요 키에 따라 취득 할 연속 행 집합이 있습니다. 더 구멍이 없다고 가정하면, 사이 사이에 성능이 있습니다 :
SELECT * FROM `theTable` WHERE `id` IN (n, ... nk);
과:
SELECT * FROM `theTable` WHERE `id` BETWEEN n AND nk;
해결법
-
==============================
1.BETWEEN (도 있지만, 측정 및 검사 실행 계획을!)이 경우 IN을 능가한다, 통계는 아직 정확으로 n이 성장하고 특히. 이제 가정 해 봅시다 :
BETWEEN (도 있지만, 측정 및 검사 실행 계획을!)이 경우 IN을 능가한다, 통계는 아직 정확으로 n이 성장하고 특히. 이제 가정 해 봅시다 :
어떤 경우에는, 당신은 전체 테이블 스캔을받을 각 행에 술어를 평가할 수 있습니다 :
-
==============================
2.B와 C 사이의 매크로하다 B로 확장 <= A 및 <= C.
B와 C 사이의 매크로하다 B로 확장 <= A 및 <= C.
(B, C, D)에서, A는 매크로하다는 = B 또는 C = 또는 = D로 확장된다.
당신의 N 가정 및 NK 정수, 모두 같은 의미까지 끝나야합니다. N 변형에 대한 비교 - 그것은 두 NK 대, 비교에만 있기 때문에 변형 사이는 훨씬 더 빨리해야한다.
-
==============================
3.이 질문에 대한 연구를했다. 내 테이블에 11M 행을 가지고있다. 나는 그 두 개의 쿼리를 실행 한 :
이 질문에 대한 연구를했다. 내 테이블에 11M 행을 가지고있다. 나는 그 두 개의 쿼리를 실행 한 :
쿼리 1 : 선수 SELECT * FROM WHERE 10 ~ 20 BETWEEN SCORE
질의 2 : 선수 SELECT * FROM WHERE 점수 IN (10, 11, ..., 20)
Andomar 위에서 말한대로 실행 시간 동안, 두 쿼리가 변환됩니다.
두 쿼리 중 쿼리 1은 빠른 쿼리 2 이상의 실행 중입니다.
더 알고하려면이 링크를 따르십시오 :
MySQL은 VS IN () BETWEEN의 성능
감사합니다.
from https://stackoverflow.com/questions/3308280/is-there-a-performance-difference-between-between-and-in-with-mysql-or-in-sql-in by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 와 BY와 오라클의 KEEP없이 PARTITION (0) | 2020.07.03 |
---|---|
[SQL] 여러 테이블이 많은 관계로 하나가 필요합니다 (0) | 2020.07.03 |
[SQL] SQL Server의 일광 절약 시간 시작 및 종료 기능을 만드는 방법 (0) | 2020.07.03 |
[SQL] 부동산의 열 이름은 최대 절전 모드로 매핑하기 (0) | 2020.07.03 |
[SQL] 스크립트 SQL은 특정 테이블에 대한 외부 키를 찾는 방법은? (0) | 2020.07.03 |