본문 바로가기
MySQL

인덱스 사용시 주의사항

by AsCE_hyunseung 2021. 4. 6.
  • 인덱스로 사용된 컬럼값 그대로 사용해야만 인덱스가 사용된다.
    • ex) where salary * 10 > 150000;는 인덱스를 못타지만where salary > 150000 / 10; 은 인덱스를 사용한다
  • AND연산자는 각 조건들이 읽어와야할 ROW수를 줄이는 역할을 하지만
    or 연산자는 비교해야할 ROW가 더 늘어나기 때문에 풀 테이블 스캔이 발생할 확률이 높다.
  • between, like, <, > 등 범위 조건은 해당 컬럼은 인덱스를 타지만, 그 뒤 인덱스 컬럼들은 인덱스가 사용되지 않는다.
  • 인덱스가 늘어날 수록 테이블을 갱신할 때 오버헤드가 커지고디스크 공간이 늘어나므로 최적의 인덱스를 찾는 것이 중요하다.
  • PK나 FK 등 무결성 제약이 부여된 키는 기본적으로 인덱스가 같이 생성되므로 중복 생성하면 안된다. 
  • 카디널리티가 낮은 열에는 인덱스를 만들면 안된다.
    • 카디널리티 낮다 === 중복되는 데이터가 많이 존재한다.

 

카디널리티가 높은 곳에 인덱스를 만들면?

카디널리티가 낮은 곳에 인덱스를 만들면?

'MySQL' 카테고리의 다른 글

서브쿼리  (0) 2021.05.05
쿼리 캐시  (0) 2021.05.02
count(*)와 인덱스  (0) 2021.04.09
TIMESTAMP의 범위가 2038-01-19 03:14:07까지인 이유  (0) 2021.04.03
문자셋 변환  (0) 2021.04.03