>데이터 베이스 >MySQL 튜토리얼 >MySQL의 IN 절을 사용하여 여러 열을 효율적으로 쿼리하려면 어떻게 해야 합니까?

MySQL의 IN 절을 사용하여 여러 열을 효율적으로 쿼리하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-01 11:36:12909검색

How Can I Efficiently Query Multiple Columns Using MySQL's IN Clause?

MySQL을 사용하여 IN 절의 여러 열 쿼리

구조화된 데이터로 작업할 때 IN 절 내의 여러 열을 쿼리하는 것은 일반적인 작업입니다. . 그러나 MySQL의 경우 단일 튜플과 튜플 집합에 IN 절을 사용하는 것에는 미묘한 차이가 있습니다.

단일 튜플 쿼리:

원본 질문은 지리적 좌표를 나타내는 4개의 열(x0, y0, x1, y1)이 있는 시나리오를 설명합니다. (4, 3, 5, 6)과 같은 단일 값 조합의 경우 다음과 같이 IN 절을 사용할 수 있습니다.

SELECT * FROM my_table WHERE (x0, y0, x1, y1) IN ((4, 3, 5, 6))

(x0, y0, x1, y1에 대한 복합 인덱스 사용) ), 이 쿼리는 원하는 행을 효율적으로 찾습니다.

다중 튜플 쿼리:

그러나 이 질문에는 [(4, 3, 5, 6), (9, 3, 2, 1)]과 같은 튜플 목록 쿼리도 포함됩니다. 이러한 시나리오의 경우 MySQL의 최적화 프로그램이 항상 IN 절을 최적으로 처리하지 못할 수도 있습니다.

최신 MySQL 버전의 최적화 기능 개선:

이전 MySQL 버전(5.7 이전)에서는 최적화 프로그램은 제공된 설명에 따라 다중 튜플 쿼리를 일련의 OR 절로 분류합니다. 답변:

(  ( x0 = 4 AND y0 = 3 AND x1 = 5 AND y1 = 6 ) 
OR ( x0 = 9 AND y0 = 3 AND x1 = 2 AND y1 = 1 )
)

이 접근 방식은 특히 대규모 데이터 세트의 경우 비효율적인 실행 계획으로 이어질 수 있습니다.

최신 버전의 MySQL(5.7 이상)에서는 최적화 프로그램이 개선되어 더 많은 데이터 세트를 생성합니다. 다중 튜플 IN 쿼리에 대한 효율적인 계획. 이러한 버전의 경우 다음 구문을 사용하는 것이 좋습니다.

(x0, y0, x1, y1) IN ((4, 3, 5, 6), (9, 3, 2, 1))

최적화 프로그램은 사용 가능한 인덱스를 활용하는 최적화된 실행 계획을 자동으로 생성합니다.

결론:

MySQL을 사용하여 IN 절의 여러 열을 쿼리할 때 권장되는 접근 방식은 MySQL 버전에 따라 다릅니다. 이전 버전의 경우 쿼리를 OR 절로 나누는 것이 좋습니다. 최신 버전의 경우 향상된 최적화 프로그램은 수동으로 재구성할 필요 없이 여러 튜플 IN 쿼리를 효율적으로 처리할 수 있습니다.

위 내용은 MySQL의 IN 절을 사용하여 여러 열을 효율적으로 쿼리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.