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

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

Patricia Arquette
Patricia Arquette원래의
2024-12-29 12:31:14883검색

How Does WHERE Clause Condition Ordering Affect MySQL Query Performance?

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

여러 조건으로 복잡한 쿼리를 작성할 때 해당 조건의 순서가 잠재적으로 영향을 미칠 수 있습니다. MySQL의 성능. 회사 ID로 필터링하는 등 특정 조건을 사용하면 검사되는 행 수를 크게 줄일 수 있습니다.

질문:

조건 순서가 다른 다음 두 쿼리를 고려해 보세요.

쿼리 1:

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

쿼리 2:

 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) 

이러한 조건의 순서가 MySQL의 효율성에 영향을 미치나요?

답변:

WHERE 절 조건의 순서가 실제로 영향을 미칠 수 있습니다. 특정 상황에서의 MySQL 성능. 다음 예를 고려하십시오.

쿼리 3:

SELECT myint FROM mytable WHERE myint >= 3 OR myslowfunction('query #1', myint) = 1;

쿼리 4:

SELECT myint FROM mytable WHERE myslowfunction('query #2', myint) = 1 OR myint >= 3;

이러한 쿼리 간의 유일한 차이점은 OR 조건의 피연산자의 순서입니다. . "myslowfunction"은 의도적으로 1초 동안 지연시키는 함수입니다. 쿼리 실행 결과는 다음과 같습니다.

  • 쿼리 3: myslowfunction이 4번 호출되었습니다(myint 값 1, 2, 3, 4).
  • 쿼리 4: myslowfunction이 7번 호출되었습니다( myint 값은 1, 2, 3, 4, 5, 6, 7).

항상 참이 아닌 피연산자가 있는 OR 조건의 왼쪽에 느린 함수가 나타날 경우 함수가 더 자주 실행되는 것을 보여줍니다.

결론:

요약하면 WHERE 절의 조건 순서는 다음과 같은 이유로 MySQL 성능에 영향을 미칠 수 있습니다. 단락. 성능을 최적화하려면 검사되는 행 수를 크게 줄일 것으로 예상되는 조건(예: 회사 ID)을 조건 체인에 최대한 빨리 배치하세요.

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

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