>  기사  >  데이터 베이스  >  "explain"이 "count()"와 다른 행 개수를 보고하는 이유는 무엇입니까?

"explain"이 "count()"와 다른 행 개수를 보고하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-06 21:33:02437검색

Why Does

"explain"과 "count()"에서 반환되는 행 개수의 불일치: 자세히 살펴보기

"explain"에서 반환된 행 수와 "count()"에서 얻은 실제 행 수입니다. "explain"이 가져온 행 수에 대한 정확한 추정치를 제공한다고 가정하는 것이 직관적으로 보일 수 있지만 항상 그런 것은 아닙니다.

"explain" 명령 이해

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

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