더북(TheBook)

실제로 테이블 스캔이 더 나은 성능을 보일 때가 있는데, 어느 정도는 반환되는 로우 비율에 의존한다. 대부분은 테이블에 적절한 인덱스를 만드는 것이 낫다. 자세히 알고 싶다면 ‘BETTER WAY 46. 실행 계획의 작동 원리를 이해하자’를 참고한다.

인덱스가 데이터의 추출 문제를 해결해 주는 만능 해결사라고 여기는 것은 위험한 생각이다. 많은 인덱스가 데이터를 빠르게 가져오지도 않고 데이터 갱신 속도만 느리게 한다. 문제는 인덱스 컬럼 하나를 갱신할 때마다 ‘인덱스 테이블’을 하나 이상 갱신하게 되며, 이는 더 많은 디스크 읽기와 쓰기가 발생함을 의미한다. 인덱스는 구조화가 매우 잘 되어 있기 때문에 인덱스를 갱신하는 작업은 종종 테이블을 갱신하는 작업보다 비용이 많이 든다.

보통 운영 목적의 테이블은 데이터 갱신 작업이 많으므로 이런 테이블에서는 모든 인덱스를 면밀히 검토해야 한다. 보고서용 테이블이 많은 데이터베이스(데이터 웨어하우스)는 갱신 작업이 많지 않으므로 인덱스 적용에 머뭇거릴 필요가 없다(‘BETTER WAY 9. 데이터 웨어하우스에는 역정규화를 사용하자’에서 언급했듯이 이런 데이터베이스는 역정규화하기 좋은 후보다). 하지만 인덱스가 만병통치약은 아니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.