여러 열에 걸쳐 지리적 좌표가 포함된 데이터베이스로 작업할 때 좌표 목록을 기반으로 데이터를 효율적으로 쿼리합니다. 결정적일 수 있습니다. 이 경우 x0, y0, x1, y1이라는 4개의 열이 있는 테이블이 있으며 각 열은 특정 지리적 위치를 나타냅니다. 테이블은 x0, y0, x1, y1 순서로 이 4개 열을 기반으로 인덱싱됩니다.
이러한 데이터를 쿼리하려면 여러 열이 포함된 IN 절을 사용하는 것이 도움이 될 수 있습니다. 그러나 MySQL에는 (a, b) IN ((...), (...)) 구문을 직접 사용할 때 특정 제한 사항이 있습니다.
최대 효율성을 위해 IN 조건자 다시 작성 :
이러한 한계를 극복하고 기존 인덱스를 활용하기 위해 IN 조건자를 일련의 OR 조건으로 다시 작성할 수 있습니다. 각 조건은 4개 열의 값이 지정된 좌표 쌍 중 하나와 일치하는지 확인합니다.
( (x0 = 4 AND y0 = 3 AND x1 = 5 AND y1 = 6) OR (x0 = 9 AND y0 = 3 AND x1 = 2 AND y1 = 1) )
이 접근 방식을 사용하면 MySQL은 열의 인덱스를 효과적으로 활용하고 쿼리를 효율적으로 실행할 수 있습니다.
최신 버전의 MySQL 최적화:
최신 버전의 MySQL에서는 다음 문제를 해결했습니다. 여러 열이 포함된 IN 절을 사용하는 것과 관련된 성능 문제입니다. 이 버전의 최적화 프로그램은 보다 효율적인 실행 계획을 생성하도록 개선되었습니다.
특히, (a, b) IN ((...), (...)) 구문이 이제 MySQL에서 지원됩니다. , 최적화 프로그램은 사용 가능한 인덱스를 활용하는 계획을 생성할 수 있습니다. 이렇게 하면 위에서 설명한 대로 IN 조건자를 수동으로 다시 작성할 필요가 없습니다.
위 내용은 MySQL에서 IN 절을 사용하여 여러 열을 효율적으로 쿼리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!