DB index

Kim Dong Kyun·2023년 3월 28일
0
post-custom-banner

인덱스?

  • 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조입니다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장합니다.

  • 인덱스가 생성 되었다면 생성한 인덱스의 컬럼을 Where 조건으로 쿼리하면 옵티마이저에서 판단하여 생성된 인덱스를 타게 됩니다. 그러면 인덱스에 저장되어 있는 데이터의 물리적 주소로 가서 데이터를 가져오게 됩니다

즉, 인덱스는 검색용으로 별도의 물리적 공간을 가지고 있습니다.

인덱스 사용의 장점

  1. 빠른 검색: 인덱스를 사용하면 데이터베이스 검색 속도가 빨라집니다. 인덱스는 데이터를 더 빠르게 찾기 위해 특별한 데이터 구조를 사용하며, 이 구조는 테이블의 모든 데이터를 검색하지 않아도 된다는 것을 의미합니다. 대부분의 검색은 인덱스에서 수행되므로 데이터베이스의 검색 시간이 크게 줄어듭니다.

  2. 정렬: 인덱스를 사용하면 데이터를 정렬할 필요가 없습니다. 데이터는 인덱스에서 이미 정렬되어 있으므로 검색 속도가 향상됩니다.

인덱스 사용의 단점

  1. 인덱스 생성 비용: 인덱스를 생성하면 디스크 공간이 추가로 필요하고, 인덱스가 갱신될 때마다 인덱스를 갱신해야 합니다. 이는 데이터베이스의 쓰기 성능을 떨어뜨릴 수 있습니다.

  2. 인덱스 관리 비용: 인덱스는 데이터베이스의 일부분이므로 인덱스를 유지 보수해야 합니다. 인덱스를 갱신하거나 삭제해야 할 때마다 추가 작업이 필요합니다. 이는 데이터베이스 관리 비용을 높일 수 있습니다.

    • 해당 컬럼의 데이터가 삭제된다고 해도, 인덱스의 정보는 남아있기 때문입니다.

인덱스 사용 시 주의해야 하는 점

  1. 쿼리의 WHERE 절에 LIKE '%a%' 와 같은 와일드 카드를 사용하면 안됩니다
    • 더불어 쿼리에 대한 최적화가 필요합니다
  2. 무조건 인덱스를 사용하면 안됩니다.
    • 검색 속도를 높이는 데 도움이 되지만, 삽입/삭제 시 성능 저하가 발생합니다. 조회 쿼리가 자주 생기는 칼럼에만 인덱스를 걸어줘야 합니다.
  3. 인덱스의 크기가 너무 커지면 검색 속도가 느려집니다. 인덱스의 크기를 최소화 할 필요가 있습니다.
post-custom-banner

0개의 댓글