> 데이터 베이스 > MySQL 튜토리얼 > WHERE 절 조건의 순서가 MySQL 쿼리 성능에 어떤 영향을 줍니까?

WHERE 절 조건의 순서가 MySQL 쿼리 성능에 어떤 영향을 줍니까?

Patricia Arquette
풀어 주다: 2024-12-27 14:35:10
원래의
843명이 탐색했습니다.

How Does the Order of WHERE Clause Conditions Affect MySQL Query Performance?

WHERE 절 조건 순서가 MySQL 성능에 미치는 영향

여러 조건이 포함된 복잡한 쿼리를 작성할 때 해당 조건을 지정하는 순서에 따라 MySQL 성능에 영향을 미칩니다. 간단한 조건의 경우 일반적으로 순서에 따른 차이가 거의 없지만, 하나의 조건으로 결과 집합의 범위가 크게 좁아지면 더 중요해집니다.

다음 두 쿼리를 고려하세요.

SELECT * FROM clients WHERE
(firstname LIKE :foo OR lastname LIKE :foo OR phone LIKE :foo) AND
(firstname LIKE :bar OR lastname LIKE :bar OR phone LIKE :bar) AND
company = :ugh
로그인 후 복사
SELECT * FROM clients WHERE
company = :ugh AND
(firstname LIKE :foo OR lastname LIKE :foo OR phone LIKE :foo) AND
(firstname LIKE :bar OR lastname LIKE :bar OR phone LIKE :bar)
로그인 후 복사

In 두 쿼리 모두 OR 조건을 사용하여 여러 필드에서 특정 기준을 충족하는 행을 검색합니다. 첫 번째 조건은 일반적으로 큰 결과 집합을 생성하지만 "회사" 조건은 결과를 훨씬 더 좁은 집합으로 제한합니다.

MySQL의 실행 계획에 따르면 WHERE 조건에 대해 왼쪽에서 오른쪽 평가 순서를 따릅니다. . 이는 첫 번째 쿼리에서 MySQL이 OR 조건을 적용하기 전에 "회사" 조건을 실행한다는 것을 의미합니다. "회사" 조건이 적은 수의 행을 반환하는 경우 MySQL은 효율성을 위해 해당 행을 인덱싱하여 후속 OR 조건을 처리하는 오버헤드를 줄입니다.

반대로, 두 번째 쿼리에는 "회사" 조건이 뒤에 나열되어 있습니다. OR 조건. 결과적으로 MySQL은 OR 조건을 먼저 실행하여 잠재적으로 더 많은 수의 행을 처리하고 필요한 경우 임시 인덱스를 생성합니다. 이러한 추가 인덱싱 단계는 쿼리 오버헤드를 증가시킬 수 있습니다.

단락 및 성능 영향

WHERE 절 조건의 순서도 경우에 따라 성능에 영향을 미칠 수 있다는 점에 유의하는 것이 중요합니다. 단락이 발생하는 곳. 조건이 true로 평가되면 MySQL은 후속 조건의 평가를 우회하여 즉시 전체 조건에 대해 true를 반환합니다.

예를 들어 다음 쿼리를 고려하십시오.

SELECT myint FROM mytable WHERE myint >= 3 OR myslowfunction('query #1', myint) = 1;
로그인 후 복사

" myint >= 3"이 주어진 행에 대해 true로 평가되면 MySQL은 시간이 많이 걸리는 작업인 "myslowfunction" 호출을 실행하지 않습니다. 그러나 OR 조건 왼쪽에 "myslowfunction"이 나타나면 "myint >= 3" 조건을 만족하지 않는 행이라도 모든 행에 대해 실행됩니다.

결론

WHERE 절 조건의 순서는 일반적으로 성능에 최소한의 영향을 주지만, 하나의 조건으로 인해 결과 집합이 크게 좁아지는 경우에는 요인이 될 수 있습니다. 또는 단락이 관련된 곳. WHERE 절 시작 부분에 보다 제한적인 조건을 배치하면 쿼리 성능과 효율성을 잠재적으로 향상시킬 수 있습니다.

위 내용은 WHERE 절 조건의 순서가 MySQL 쿼리 성능에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿