"explain"과 "count()"에서 반환되는 행 개수의 불일치: 자세히 살펴보기
"explain"에서 반환된 행 수와 "count()"에서 얻은 실제 행 수입니다. "explain"이 가져온 행 수에 대한 정확한 추정치를 제공한다고 가정하는 것이 직관적으로 보일 수 있지만 항상 그런 것은 아닙니다.
"explain" 명령 이해
"explain" 명령은 실제로 쿼리를 실행하지 않습니다. 대신 쿼리 계획을 분석하고 처리될 행 수를 추정합니다. 이 추정치는 관련 테이블에 대해 유지 관리되는 통계를 포함한 다양한 요소를 기반으로 합니다.
"explain"에 의해 보고된 행이 다를 수 있는 이유
"explain" 사이의 불일치 " 출력 및 실제 행 개수는 다음과 같은 이유로 인해 발생할 수 있습니다.
불일치의 예
다음 예를 고려하십시오.
mysql> select count(*) from table where relation_title='xxxxxxxxx'; +----------+ | count(*) | +----------+ | 1291958 | +----------+ mysql> explain select * from table where relation_title='xxxxxxxxx'; +----+-------------+---------+- | id | select_type | rows | +----+-------------+---------+- | 1 | SIMPLE | 1274785 | +----+-------------+---------+-
보시다시피 "explain"은 쿼리가 1274785개의 행을 처리할 것으로 추정하지만, "count(*)"는 1291958개의 행 수를 반환합니다. 이러한 불일치는 위에서 설명한 추정 부정확성과 오래된 통계로 인해 발생합니다.
정확한 행 개수의 중요성
쿼리를 최적화하고 불필요한 오버헤드를 피하려면 정확한 행 개수를 얻는 것이 중요합니다. . "설명"의 한계를 이해함으로써 개발자는 추정치에 의존할지 또는 처리되는 행 수를 결정하기 위한 대체 방법을 찾을지에 대해 정보에 입각한 결정을 내릴 수 있습니다.
위 내용은 "explain"이 "count()"와 다른 행 개수를 보고하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!