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 중국어 웹사이트의 기타 관련 기사를 참조하세요!