먼저 안내하자면, DBA수준의 지식이 아니기 때문에 INDEX에 대해 깊게 이야기하는 건 조금 어려울 수 있지만, 개발자 입장에서 이해하고 가면 좋을 정도를 기술해볼까 합니다. (원래는 오라클의 INDEX 사용법에 대해 먼저 기술하려 했지만, 그전에 가볍게 건들고 가도 좋을 것 같아 작성된 내용이므로 그냥 가볍게 봐주셨으면 합니다.)
INDEX란?
흔히 책을 펼치면 두 가지 인덱스를 마주하게 됩니다. 첫 번째는 목차, 두 번째는 책의 마지막에 나오는 용어별 페이지 쪽수 (주로 전공서 등에 있음)로 나눠 볼 수 있습니다. 첫 번째의 경우 주제별로 우리가 페이지를 찾아가기 쉽게 하고, 두 번째의 경우 용어별로 원하는 페이지를 찾기 쉽게 합니다.
이처럼 인덱스란, 데이터(책 페이지)를 쉽게 찾을 수 있도록 정의된 페이지라고 보시면 됩니다.
인덱스(영어: index)는 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조를 일컫는다. 인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다. 고속의 검색 동작뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다. 인덱스를 저장하는 데 필요한 디스크 공간은 보통 테이블을 저장하는 데 필요한 디스크 공간보다 작다. (왜냐하면 보통 인덱스는 키-필드만 갖고 있고, 테이블의 다른 세부 항목들은 갖고 있지 않기 때문이다.) 관계형 데이터베이스에서는 인덱스는 테이블 부분에 대한 하나의 사본이다. |
일반적으로 개발자들은 데이터베이스에게 3가지를 데이터베이스에 바라게 됩니다.
1. 데이터가 잘 저장되어야 한다.
2. 저장된 데이터가 안정적이어야 한다.
3. 저장된 데이터가 잘 활용되어야 한다.
<사족>
저장이 잘 안 되고 저장된 데이터가 누수되거나 깨진다면 저장에 이유가 없을 것이고, 이 저장되는 데이터에 목적이 없다면 이는 단순히 휴지통에 넣는 쓰레기일 뿐일 겁니다.
인덱스의 목적은 이 중에서 3번의 효율을 더 높여주는 검색 속도에 있습니다.
만약 내가 자주 검색하는 순서가 있다면(ex. 이름순, 가격순 등), 이를 데이터베이스에 "이 기준으로 인덱스를 적용해주세요."라고 해두면, 데이터베이스는 데이터가 저장되거나 삭제, 수정될 때 또는 그 이외에 지정된 시점에 요청한 기준대로 목차 페이지를 따로 만들어둡니다. 그리고 우리가 Select문을 호출하면 목차를 뒤져 맞는 목차가 있는지 확인하여 해당 목차대로 데이터를 찾아 보여줍니다.
'개발 창고 > Database' 카테고리의 다른 글
[MySQL] 임의의 비밀번호 채번하기 (0) | 2020.11.30 |
---|---|
[SQL] 인덱스 생성/조회/삭제 (feat. MariaDB) (0) | 2020.11.09 |
[SQL] GROUP BY란? - 함수편 (0) | 2020.09.28 |
[SQL] GROUP BY란? - 기본편 (0) | 2020.09.23 |
[SQL] 별칭(Alias) 활용하기 (0) | 2020.09.22 |