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

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

Barbara Streisand
Barbara Streisand원래의
2024-12-24 09:24:13229검색

How Does WHERE Clause Condition Ordering Impact MySQL Query Performance?

Where 절 조건 순서 지정 및 MySQL 성능

쿼리에 수많은 조건이 포함되어 있고 특정 조건이 결과 집합의 범위를 상당히 좁히는 시나리오에서는 WHERE 절의 조건 순서는 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);

첫 번째 쿼리에서는 회사 필드를 기준으로 필터링하는 조건이 WHERE 절 시작 부분에 배치됩니다. 이 조건은 후속 조건에 대해 평가해야 하는 행 수를 효과적으로 줄입니다.

두 번째 쿼리에서는 조건 순서가 반대입니다. 회사 분야를 기준으로 필터링하는 조건은 다른 조건 다음에 평가됩니다.

데이터 분포에 따라 조건의 순서가 성능에 영향을 줄 수 있습니다. WHERE 절 시작 부분에 결과 집합을 크게 줄이는 조건을 배치함으로써 MySQL은 이를 조기에 적용하고 해당 조건을 충족하지 않는 행에 대한 후속 조건을 평가하지 않도록 할 수 있습니다.

이 최적화를 "짧은"이라고 합니다. -순환 중." 지정된 행에 대해 처음의 조건이 false로 평가되면 MySQL은 나머지 조건을 평가하지 않고 해당 행을 즉시 삭제합니다.

그러나 이 최적화가 항상 적용 가능한 것은 아니라는 점에 유의하는 것이 중요합니다. 모든 조건의 선택성이 비슷한 경우 조건 순서는 성능에 큰 영향을 미치지 않을 수 있습니다.

최적의 조건 순서를 결정하려면 다음 요소를 고려하세요.

  • 선택성 조건별
  • 데이터 분포
  • 쿼리 실행 계획 및 시기

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

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