본문 바로가기
목차훔치기/면접을 위한 CS 전공지식 노트

인덱스 만드는 방법(면접을 위한 CS 전공지식 노트)

by 해삼2 2023. 10. 13.
728x90
반응형
인덱스 만드는 방법

인덱스 만드는 방법

데이터베이스에서 인덱스를 만드는 방법은 데이터베이스 관리 시스템(DBMS)에 따라 다를 수 있으며, 

일반적으로 사용되는 SQL 문을 사용하여 인덱스를 생성합니다. 아래는 일반적인 데이터베이스 시스템(예: MySQL, PostgreSQL, SQL Server, Oracle)에서 인덱스를 만드는 과정을 설명하는 기본 가이드입니다.

테이블 및 필드 선택: 

먼저 어떤 테이블의 어떤 열(Column)에 인덱스를 생성할 것인지를 결정합니다. 

인덱스를 만들 필드는 검색 또는 정렬에 자주 사용되는 필드를 선택하는 것이 좋습니다.

인덱스 생성 SQL 작성: 

선택한 테이블 및 필드에 대한 인덱스를 생성하는 SQL 문을 작성합니다. 

아래는 일반적인 SQL 문의 예시입니다.

index_name: 

생성할 인덱스의 이름을 정의합니다. 

이름은 고유해야 하며, 인덱스를 참조할 때 사용됩니다.


table_name: 

인덱스를 생성할 테이블 이름을 지정합니다.
column1, column2, ...: 인덱스를 만들 열(Column)의 이름을 나열합니다. 

하나 이상의 열을 인덱싱할 수 있습니다.


SQL 문 실행: 

작성한 SQL 문을 데이터베이스에 실행하여 인덱스를 생성합니다. 

이는 데이터베이스 관리 도구 또는 명령줄에서 수행할 수 있습니다.

예를 들어, MySQL에서 employees 테이블의 last_name 및 first_name 열에 인덱스를 생성하려면 

다음과 같은 SQL 문을 사용할 수 있습니다.

이렇게 하면 idx_employee_names라는 인덱스가 employees 테이블의 last_name 및 first_name 열에 

생성됩니다.

인덱스를 생성할 때 몇 가지 고려 사항이 있습니다. 

인덱스를 많이 생성하면 데이터베이스의 쓰기 성능이 저하될 수 있으므로 

필요한 인덱스만 생성해야 합니다. 

또한 인덱스의 유지 관리에는 시간과 리소스가 소요되므로 주기적으로 인덱스를 최적화하거나 

제거해야 할 수도 있습니다.

 

인덱스를 생성하는 이유

인덱스를 생성하는 주요 이유는 데이터베이스의 성능을 향상시키는 것입니다.

인덱스는 데이터베이스에서 데이터를 검색, 필터링, 정렬 및 조인하는 데 도움을 주는 중요한 구조입니다.

다음은 인덱스를 생성하는 주요 이유들입니다.

데이터 검색 속도 향상: 

인덱스를 사용하면 데이터베이스에서 레코드를 효율적으로 찾을 수 있습니다. 

인덱스는 검색 조건과 일치하는 레코드를 빠르게 식별하므로 데이터베이스에서 필요한 데이터를 더 

빠르게 검색할 수 있습니다.

정렬 및 그룹화 속도 향상: 

인덱스는 정렬 및 그룹화 작업을 빠르게 처리하는 데 도움을 줍니다. 

정렬된 결과를 반환하는 쿼리나 GROUP BY 절을 사용하는 쿼리에 대해 인덱스가 필요합니다.

조인 성능 개선: 

테이블 간의 조인 작업은 인덱스를 통해 훨씬 효율적으로 수행됩니다. 

인덱스된 열을 기반으로 조인을 수행하면 레코드를 빠르게 연결할 수 있습니다.

고유성 유지: 

일반적으로 데이터베이스는 고유성을 갖는 열에 대한 인덱스를 생성합니다. 

이렇게 하면 중복된 데이터를 방지하고 데이터 무결성을 유지할 수 있습니다.

범위 쿼리 지원: 

범위 쿼리(예: BETWEEN, >, <)를 사용하는 경우 인덱스는 해당 범위의 

데이터를 신속하게 식별할 수 있도록 돕습니다.

부하 분산: 

인덱스를 사용하면 데이터베이스 시스템이 모든 데이터를 스캔하지 않고 필요한 데이터만 처리할 수 

있으므로 시스템 부하가 분산됩니다.

데이터 무결성 유지: 

고유성 제약 조건을 강화하고 데이터의 무결성을 유지하기 위해 사용됩니다.

쿼리 최적화: 

쿼리 실행 계획을 최적화하는 데 도움을 줍니다. 

데이터베이스 관리 시스템은 적절한 인덱스를 사용하여 쿼리 성능을 최대화하도록 계획을 세울 수 있습니다.

인덱스를 생성할 때 주의해야 할 점은 인덱스를 과도하게 생성하지 않는 것입니다. 

너무 많은 인덱스는 데이터베이스의 쓰기 성능을 저하시킬 수 있으므로 필요한 인덱스만을 생성하고 

주기적으로 최적화하는 것이 중요합니다.

 

인덱스 자세히 알기!! EX

예시: 고객 데이터베이스에서 특정 고객의 주문 내역을 찾는 경우

고객 데이터베이스에는 수천 명의 고객이 있고 각 고객은 고유한 ID를 가지고 있습니다. 

고객의 주문 내역을 찾으려면 해당 고객의 ID를 사용하여 데이터베이스에서 검색해야 합니다.

인덱스의 역할:
만약 고객 ID에 대한 인덱스가 생성되어 있다면, 

데이터베이스는 해당 ID를 사용하여 빠르게 해당 고객의 주문 내역을 찾을 수 있습니다.
인덱스가 없다면 데이터베이스는 모든 고객 레코드를 순회하면서 해당 ID를 찾아야 하며, 

이는 시간이 오래 걸릴 수 있습니다.
따라서 인덱스는 특정 검색 조건에 따라 데이터를 빠르게 찾을 때 사용됩니다. 

위의 예시에서는 고객 ID에 대한 인덱스가 사용되어 특정 고객의 주문 내역을 효율적으로 

검색하는 데 도움이 됩니다.

 






 

 

 

728x90
반응형