1. 인덱스란 무엇인가요?
- 데이터베이스에서 데이터의 빠른 검색을 위해 사용되는 구조이다.
2. 데이터베이스에서 어떤 상황에서 인덱스를 사용해야 하나요?
- 대량의 데이터가 있는 테이블에서 특정 데이터를 빠르게 검색해야할 때
- 정렬된 결과를 필요로 하는 쿼리를 자주 실행해야 할 때
- 조인 작업이 자주 발생하는 쿼리에서 조인 컬럼에 인덱스를 생성해야 할 때
3. 어떻게 인덱스를 선택하고 설계해야 하나요? 어떤 요소를 고려해야 하나요?
- 어떤 컬럼 조합에 인덱스를 생성해야할 지 결정한다.
- 데이터의 변경 빈도와 검색 빈도를 고려해 인덱스를 생성한다.
- 특정 쿼리의 실행 계획을 개선하기 위해 인덱스를 조정한다.
4. 인덱스를 사용하면 어떤 부작용이 발생할 수 있나요?
- 인덱스를 유지하기위해 추가적인 디스크 공간이 필요하다.
- 데이터의 변경 작업(SELECT 외)이 느려질 수 있다.
5. 인덱스의 크기는 어떻게 결정되나요? 어떤 요소가 인덱스 크기에 영향을 미치나요?
- 인덱스에 저장되는 키의 개수와 각 키의 크기에 따라 결정된다.
- 인덱스의 크기가 크면 추가적인 리소스가 필요하다.
6. 인덱스의 작동 원리는 무엇인가요? 어떻게 인덱스를 사용하여 데이터를 검색하나요?
- 일반적으로 B-트리를 사용한다. B-트리는 각 노드에 여러 개의 키와 자식이 있고, 키를 기반으로 정렬되어 있다. 이 트리 구조를 통해 효율적으로 탐색할 수 있다.
7. 인덱스의 성능을 개선하기 위해 어떤 방법을 사용할 수 있나요?
- 적절한 인덱스 유형을 선택한다.
- 인덱스의 크기를 최소화하고 중복 키를 최소화한다.
8. 인덱스의 비용은 무엇인가요? 인덱스를 생성하고 유지하기 위해 어떤 리소스가 필요한가요?
- 인덱스의 크기가 클수록 더 많은 디스크 공간이 필요하며, 인덱스를 유지하는데에도 추가적인 리소스가 필요하다.
9. 인덱스의 효과를 평가하거나 분석하기 위해 어떤 도구나 기술을 사용할 수 있나요?
- DBMS에서 제공하는 성능 모니터링 또는 쿼리 실행 계획을 분석하는 도구를 사용할 수 있다.
10. 클러스터형 인덱스와 논클러스터형 인덱스의 차이점은 무엇인가요?
- 클러스터형 인덱스는 데이터 행의 물리적인 순서에 따라 인덱스를 정렬하는 것이며, 해당 테이블의 기본 정렬 순서에 따라 구성된다.
- 논클러스터형 인덱스는 데이터행의 물리적인 순서와는 독립적으로 인덱스를 정렬한다.
11. 인덱스의 선택 기준은 무엇인가요? 어떤 요소를 고려해야 특정 테이블 또는 컬럼에 인덱스를 생성하나요?
- 일반적으로 인덱스로 선택하는 컬럼은 자주 검색되는 컬럼이거나 조인 작업에 사용되는 컬럼이다.