MySQL 버전 8.0.32-0ubuntu0.20.04.2
저는 SELECT 실행을 회피하는 것이 아니라 SELECT 성능을 향상시키려고 노력하고 있습니다.
으아악1,500만 행을 삽입하세요.
으아악테이블 변경 big_table ENGINE=INNODB;
으아악**innodb_buffer_pool_size=8G 설정(128Mb에서)(MySQL 다시 시작)**
CREATE TABLE big_table ( pk INT AUTO_INCREMENT PRIMARY KEY, field1 VARCHAR(255), field2 VARCHAR(255), field3 mediumtext, field4 BIGINT, KEY idx_field4 (field4) ) ENGINE=MyISAM CHARSET=utf8mb3;
Wher 절 없이 MyISAM 테이블에서 SELECT COUNT(PK) 또는 SELECT COUNT(*)를 실행하는 것은 매우 특별한 경우입니다. 모든 행을 계산하지 않고 매우 빠르기 때문입니다. InnoDB의 동일한 쿼리는 말 그대로 모든 행을 계산하기 때문에 느립니다.
그러나 인덱스 필드에서 where 절이 작동하면 InnoDB가 MyIsam보다 성능이 뛰어난 것 같습니다. 이게 99%의 사용 사례인 것 같습니다...