- 인덱스는 INSERT/UPDATE/DELETE문을 빠르게 처리합니다.
- 인덱스는 SELECT문을 빠르게 처리합니다.
- 인덱스는 CREATE INDEX문을 빠르게 처리합니다.
- 인덱스는 CREATE DATABASE문을 빠르게 처리합니다.
정답 : 2. 인덱스는 SELECT문을 빠르게 처리합니다.
- 인덱스가 많다고 무조건 좋은 것은 아닙니다.
- 인덱스는 검색하는 속도를 빠르게 합니다.
- 인덱스는 추가적인 공간이 필요하지 않습니다.
- 인덱스를 잘 활용하면 전반적인 시스템의 성능이 향상됩니다.
정답 : 3. 인덱스는 추가적인 공간이 필요하지 않습니다.
인덱스를 생성하기 위해서는 데이터베이스의 약 10%정도에 해당되는 공간이 별도로 필요하다.
- 클러스터형 인덱스는 영어사전과 비슷한 개념입니다.
- 보조 인덱스는 일반 책의 찾아보기와 비슷한 개념입니다.
- 클러스터형 인덱스는 기본 키를 설정하면 자동 생성됩니다.
- 보조 인덱스는 NOT NULL을 설정하면 자동 생성됩니다.
정답 : 4. 보조 인덱스는 NOT NULL을 설정하면 자동 생성됩니다.
- 중복된 값을 허용하는 인덱스를 고유 인덱스라고 부릅니다.
- Primary Key로 지정하면 자동으로 인덱스가 생성됩니다.
- Unique로 지정하면 자동으로 인덱스가 생성됩니다.
- SHOW INDEX 문으로 인덱스 정보를 확인할 수 있습니다.
정답 : 1. 중복된 값을 허용하는 인덱스를 고유 인덱스라고 부릅니다.
- Primary Key로 지정하면 자동으로 생성됩니다.
- Unique로 지정하면 자동으로 생성됩니다.
- 클러스터형 인덱스가 생성된 열로 자동으로 정렬됩니다.
- 테이블 당 1개 이상을 설정할 수 있습니다.
정답 : 2. Unique로 지정하면 자동으로 생성됩니다, 4. 테이블당 1개 이상을 설정할 수 있습니다.
4 : 클러스터형 인덱스는 테이블 당 1개만 만들 수 있다.
- 트리의 제일 상단의 뿌리를 루트라고 합니다.
- 트리의 줄기를 중간이라고 합니다.
- 트리의 끝에 달린 잎을 리프라고 합니다.
- 트리의 일부분을 잘라낸 것을 가지라고 합니다.
정답 : 4. 트리의 일부분을 잘라낸 것을 가지라고 합니다.
- 노드 중 제일 상위 노드를 말합니다.
- 노드 중 가운데 낀 노드를 말합니다.
- 노드 중 제일 마지막 노드를 말합니다.
- 16KB 크기의 최소한의 저장 단위입니다.
정답 : 1:루트 노드, 2:중간 노드, 3:리프 노드, 4:페이지
- 인덱스를 구성하게 되면 데이터의 변경 작업(INSERT, UPDATE, DELETE)시에 성능이 나빠지는 단점이 있습니다. 특히 INSERT작업이 일어날 때 더 느리게 입력될 수 있는데요, 이유는 ( )이라는 작업이 발생하기 때문입니다. ( ) 작업이 일어나면 MySQL이 느려지고 너무 자주 일어나면 성능에 큰 영향을 줍니다.
정답 : 페이지 분할
- 클러스터형 인덱스가 없으면 데이터를 입력한 순서대로 저장됩니다.
- 클러스터형 인덱스를 생성하면 데이터를 해당 열의 내림차순으로 정렬됩니다.
- 보조 인덱스를 생성하면 데이터는 해당 열을 기준으로 오름차순 정렬됩니다.
- 클러스터형 인덱스가 보조 인덱스보다 검색 속도가 더 빠릅니다.
정답 : 2. 클러스터형 인덱스를 생성하면 데이터를 해당 열의 내림차순으로 정렬됩니다, 3. 보조 인덱스를 생성하면 데이터는 해당 열을 기준으로 오름차순 정렬됩니다.
2 : 클러스터형 인덱스를 인덱스로 지정하면 오름차순으로 정렬한다.
3 : 보조 인덱스는 생성해도 정렬되지 않는다.
- UNIQUE를 사용하면 중복되지 않는 고유 인덱스가 만들어집니다.
- 인덱스의 이름은 idx테이블이름 형식으로 고정되어 있습니다.
- ASC는 오름차순 인덱스를 만듭니다.
- DESC는 내림차순 인덱스를 만듭니다.
정답 : 2. 인덱스의 이름은 idx테이블이름 형식으로 고정되어 있습니다.
인덱스 이름은 사용자가 지정할 수 있다.
- 인덱스를 생성하는 SQL
- 인덱스를 제거하는 SQL
- 테이블에 생성된 인덱스 이름과 열을 확인하는 SQL
- 인덱스의 할당된 크기를 확인하는 SQL
정답 : 1:CREATE INDEX, 2:DROP INDEX, 3:SHOW INDEX, 4:SHOW TABLE STATUS
- 클러스터형 인덱스와 보조 인덱스를 동시에 한 테이블에 생성할 수 없습니다.
- 이미 중복된 값이 있는 열에 CREATE UNIQUE INDEX 문을 사용하면 중복 데이터는 제거됩니다.
- 고유 보조 인덱스를 생성한 후에는 해당 열에 동일한 값을 입력할 수 없습니다.
- 중복 데이터가 많은 열에는 인덱스를 만들어도 큰 효과가 없습니다.
정답 : 1. 클러스터형 인덱스와 보조 인덱스를 동시에 한 테이블에 생성할 수 없습니다, 2. 이미 중복된 값이 있는 열에 CREATE UNIQUE INDEX 문을 사용하면 중복 데이터는 제거됩니다.
1: 클러스터형 인덱스와 보조 인덱스는 함께 만들 수 있다.
2: 이미 중복된 값이 있는 열에 CREATE UNIQUE INDEX 문을 사용하면 오류가 발생한다.
- MySQL 워크벤치의[Execution Plan] 창은 SQL을 실행하기 전에 확인할 수 있습니다.
- Full Table Scan은 인덱스를 사용하지 않았다는 의미입니다.
- 인덱스를 사용하면 'Index Scan'이라고 표시됩니다.
- 인덱스가 있어도 Full Table Scan을 할 수 있습니다.
정답 : 1. MySQL 워크벤치의[Execution Plan] 창은 SQL을 실행하기 전에 확인할 수 있습니다, 3. 인덱스를 사용하면 'Index Scan'이라고 표시됩니다.
- 인덱스는 행 단위에 생성됩니다.
- WHERE 절에서 사용되는 열에 인덱스를 만들어야 합니다.
- 데이터의 중복도가 높으면 인덱스가 효과적입니다.
- 사용하지 않는 인덱스는 제거하는 것이 좋습니다.
정답 : 1. 인덱스는 행 단위에 생성됩니다, 3. 데이터의 중복도가 높으면 인덱스가 효과적입니다.
1 : 인덱스는 열 단위에 생성된다.
3 : 데이터의 중복도가 높으면 인덱스는 비효율적이다.