Zettelkasten

mysql 풀 테이블 스캔

·수정 2026.04.23·수정 1
  • 인덱스를 사용하지 않고, 테이블의 데이터를 처음부터 끝까지 읽어서 처리하는 작업

발생하는 조건

  1. 태아블의 레코드 건수가 너무 작아서 인덱스를 통해 읽는 것보다, 풀테이블 스캔하는 경우가 빠른 경우
  2. where 절이나 on 절에 인덱스를 이용할 수 있는 적절한 조건이 없는 경우
  3. 인덱스 레인지 스캔을 사용할 수 있는 쿼리라 하더라도 옵티마이저가 판단한 조건 일치 레코드 건수가 너무 많음 경우
  4. max_seeks_for_key 변수를 특정 값으로 설정하면 옵티마이저는 인텍스 선택도나 기수성을 무시하고 특정값만 읽으면 된다고 판단.
  5. Innodb 스토리지 엔진은 특정 테이블의 연속된 데이터 페이지가 읽히면 백그라운드 스레드에 의해 read ahead 작업이 자동으로 시작됨
  6. read ahead: 데이터가 앞으로 필요할 것을 예측해 요청전에 미리 디스크에 읽어 InnoDB의 버퍼풀에 가져다 두는 것을 의미함