1️⃣ 테이블 및 인덱스 통계 정보

💬 MySQL 5.7버전 이하에서는?

간단한 테이블 / 인덱스 정보만 가지고 실행 계획을 수립해 효과가 떨어졌습니다.

💬 MySQL 8.0버전 이상부터는?

인덱스가 걸리지 않은 컬럼히스토그램도 모두 수집해 실행 계획의 효과를 높였습니다.

MySQL 서버 통계 정보


버전 비교
v5.5 이하 테이블 통계 정보를 모두 메모리에 올려둬서
서버를 껐다 키면 다 날아갔습니다.
v5.6 이상 innodb_index_stats 테이블과
innodb_table_stats 테이블에 통계 정보를 저장해놓고 사용합니다.

💾 영속화 관련 옵션

STATS_PERSISTENT 1이면 통계 정보를 영구적으로 저장합니다. v5.6 이상
STATS_AUTO_RECALC 1이면 통계 정보를 자동으로 수집합니다.
0이면 ANALYZE TABLE 실행 시에만 수집합니다.

히스토그램


MySQL에서는 히스토그램으로 컬럼의 데이터 분포를 나타냅니다.

히스토그램이 없을 때?