복붙노트

[SQL] MySQL의 또는 일반적으로 SQL에서 BETWEEN과 IN 사이의 성능 차이가 있나요?

SQL

MySQL의 또는 일반적으로 SQL에서 BETWEEN과 IN 사이의 성능 차이가 있나요?

나는 자동 증가 정수의 주요 키에 따라 취득 할 연속 행 집합이 있습니다. 더 구멍이 없다고 가정하면, 사이 사이에 성능이 있습니다 :

SELECT * FROM `theTable` WHERE `id` IN (n, ... nk); 

과:

SELECT * FROM `theTable` WHERE `id` BETWEEN n AND nk;

해결법

  1. ==============================

    1.BETWEEN (도 있지만, 측정 및 검사 실행 계획을!)이 경우 IN을 능가한다, 통계는 아직 정확으로 n이 성장하고 특히. 이제 가정 해 봅시다 :

    BETWEEN (도 있지만, 측정 및 검사 실행 계획을!)이 경우 IN을 능가한다, 통계는 아직 정확으로 n이 성장하고 특히. 이제 가정 해 봅시다 :

    어떤 경우에는, 당신은 전체 테이블 스캔을받을 각 행에 술어를 평가할 수 있습니다 :

  2. ==============================

    2.B와 C 사이의 매크로하다 B로 확장 <= A 및 <= C.

    B와 C 사이의 매크로하다 B로 확장 <= A 및 <= C.

    (B, C, D)에서, A는 매크로하다는 = B 또는 C = 또는 = D로 확장된다.

    당신의 N 가정 및 NK 정수, 모두 같은 의미까지 끝나야합니다. N 변형에 대한 비교 - 그것은 두 NK 대, 비교에만 있기 때문에 변형 사이는 훨씬 더 빨리해야한다.

  3. ==============================

    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의 성능

    감사합니다.

  4. 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