본문 바로가기
MySql

MySQL Explain 계획에서 "최적화 된 테이블 선택"의 의미

by 베이스 공부 2020. 12. 17.
반응형

MySQL Explain 플랜에서 최적화 된 테이블 선택 의 의미는 무엇입니까?

explain select count(comment_count) from wp_posts;

+----+-------------+---------------------------+-----------------------------+
| id | select_type | table,type,possible_keys, | Extra                       |
|    |             | key,key_len,ref,rows      |                             |
+----+-------------+---------------------------+-----------------------------+
| 1  | SIMPLE      | all NULLs                 | Select tables optimized away| 
+----+-------------+---------------------------+-----------------------------+
1 row in set (0.00 sec)

참고 : 계획 설명 출력은 가독성을 위해 편집되었습니다.

 

해결 방법

 

이는 테이블의 행 수를 계산하는 것 이상을 수행하지 않는 쿼리를 수행했으며 해당 테이블은 MyISAM 테이블임을 의미합니다. MyISAM 테이블은 별도의 행 개수로 저장되므로이 쿼리를 수행하기 위해 MySQL은 테이블 행 데이터를 전혀 볼 필요가 없습니다. 대신 미리 계산 된 행 수를 즉시 반환합니다. 따라서 테이블 액세스가 '최적화'되고 쿼리가 매우 빠릅니다.

InnoDB와 같은 MySQL의 다른 스토리지 엔진에서는 동일하지 않습니다. 그러나 실제로는 다양한 다른 이유로 대부분의 경우 MyISAM이 아닌 InnoDB를 사용하고 싶습니다. (행 수 최적화 없이도 이런 종류의 쿼리는 매우 빠릅니다.)

select count(comment_count) from wp_posts;

그게 당신이 정말로하려는 일입니까? 이는 SELECT COUNT (*) ... 와 동일합니다 ( comment_count NULL 일 수 없다고 가정). 당신은 최적화를 얻지 못했을 것입니다). 총 comment_count ?를 원할 경우 SUM (comment_count) 을 사용해야하며 '최적화 취소'동작을 얻지 못할 것입니다.

 

참조 페이지 https://stackoverflow.com/questions/1992312

 

 

반응형

댓글