인덱스란?
MySQL에서의 인덱스는 데이터베이스에서 검색 속도를 향상시키기 위해 사용되는 데이터 구조입니다. 이는 특정 열(또는 열의 조합)에 대한 빠른 검색을 가능하게 합니다. 인덱스를 사용하면 MySQL은 전체 테이블을 스캔하지 않고도 원하는 행을 빠르게 찾을 수 있습니다.
다음은 MySQL에서의 인덱스에 대한 자세한 설명입니다:
1. **빠른 검색과 조회**:
- 인덱스를 사용하면 MySQL은 해당 인덱스를 통해 레코드를 빠르게 찾아낼 수 있습니다. 이는 특히 대량의 데이터가 있는 경우에 성능을 향상시키는 중요한 역할을 합니다.
2. **정렬된 순서**:
- 인덱스는 해당 열을 정렬된 순서로 저장하며, 이는 데이터의 검색과 정렬 작업을 효율적으로 처리할 수 있도록 도와줍니다.
3. **복잡한 쿼리 최적화**:
- 복잡한 쿼리에서도 인덱스를 사용하여 성능을 향상시킬 수 있습니다. 예를 들어, WHERE 절, JOIN, GROUP BY 등에서 인덱스가 사용될 수 있습니다.
4. **읽기 속도 향상, 쓰기 속도 감소**:
- 인덱스는 읽기 작업의 성능을 향상시킵니다. 그러나 쓰기 작업(INSERT, UPDATE, DELETE)은 인덱스를 업데이트해야 하므로 쓰기 성능은 약간 저하될 수 있습니다.
5. **유일한 값(Unique) 설정**:
- 유일한 값을 갖는 열에 대한 인덱스를 설정할 수 있습니다. 이렇게 하면 해당 열에 중복된 값을 저장하지 못하게 할 수 있습니다.
6. **FULLTEXT 검색**:
- FULLTEXT 인덱스를 사용하여 텍스트 데이터에 대한 검색을 수행할 수 있습니다. 이는 전문 검색과 관련이 있습니다.
7. **인덱스의 종류**:
- MySQL에서는 여러 종류의 인덱스를 제공합니다. 가장 일반적으로 사용되는 것은 B-Tree 인덱스이지만, FULLTEXT, SPATIAL, 등 다양한 종류의 인덱스가 있습니다.
8. **인덱스의 주의사항**:
- 인덱스를 사용하면 성능이 향상될 수 있지만, 무분별한 인덱스 생성은 오히려 성능을 저하시킬 수 있습니다. 또한 너무 많은 인덱스를 사용하면 쓰기 작업의 성능이 크게 떨어질 수 있습니다.
좋은 인덱스 디자인은 데이터베이스 성능 최적화에 중요한 역할을 합니다. 어떤 열에 인덱스를 생성할지, 어떤 종류의 인덱스를 사용할지 등을 신중하게 고려해야 합니다.
기본키란?
MySQL에서 기본키(Primary Key)는 각 행을 고유하게 식별하는 역할을 합니다. 기본키는 테이블에서 중복된 값을 가질 수 없으며, 항상 유일해야 합니다. 기본키는 해당 테이블의 레코드를 고유하게 식별하는데 사용되며, 각 행을 찾거나 연결할 때 매우 유용합니다.
기본키에는 다음과 같은 특징이 있습니다:
1. **고유성 (Uniqueness)**: 기본키는 테이블 내에서 각 행을 고유하게 식별해야 합니다. 즉, 동일한 값이 다른 행에 중복해서 나타날 수 없습니다.
2. **NULL 값 허용 불가 (Non-null)**: 기본키는 NULL 값을 가질 수 없습니다. 즉, 각 열은 반드시 값을 가져야 합니다.
3. **테이블에 하나만 존재 (Single)**: 각 테이블은 오직 하나의 기본키를 가질 수 있습니다.
4. **빠른 검색 (Fast Access)**: 기본키를 사용하면 특정 행을 빠르게 찾을 수 있습니다. 이는 인덱스를 사용하여 데이터를 효율적으로 관리하는 데 도움이 됩니다.
기본키를 설정하는 방법은 다음과 같습니다:
1. **테이블 생성 시 설정**:
```sql
CREATE TABLE my_table (
id INT PRIMARY KEY,
name VARCHAR(50)
);
```
2. **이미 존재하는 열을 기본키로 설정**:
```sql
ALTER TABLE my_table
ADD PRIMARY KEY (id);
```
3. **자동증가(Auto-increment) 기능 사용**:
```sql
CREATE TABLE my_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);
```
기본키는 테이블 간의 관계를 설정하거나 데이터를 빠르게 찾기 위한 중요한 역할을 합니다.
복합키란?
MySQL에서 복합키(Composite Key)는 둘 이상의 열로 구성된 키입니다. 이는 여러 열의 조합으로 고유한 값을 생성하고, 테이블에서 중복된 값이 허용되지 않도록 합니다. 복합키를 사용하면 여러 열을 조합하여 유일한 식별자를 만들 수 있습니다.
다음은 MySQL에서 복합키를 설정하는 예제입니다:
```sql
CREATE TABLE my_table (
column1 INT,
column2 INT,
PRIMARY KEY (column1, column2)
);
```
이 예제에서 `column1`과 `column2`는 복합키로 설정되었습니다. 이는 두 열의 조합이 고유한 값을 형성하며, 테이블 내에서 중복된 조합이 허용되지 않습니다.
복합키는 다음과 같은 특징을 갖습니다:
1. **고유성 (Uniqueness)**: 복합키는 조합된 열들의 값이 고유해야 합니다. 즉, 동일한 조합이 다른 행에 중복해서 나타날 수 없습니다.
2. **NULL 값 허용 불가 (Non-null)**: 각 열은 반드시 값을 가져야 합니다.
3. **조합된 열들의 값이 중복되면 안 됨 (Order Matters)**: 예를 들어, (A, B)와 (B, A)는 서로 다른 조합으로 간주됩니다.
복합키는 여러 열을 활용하여 데이터를 정확하게 식별하고 관리할 때 유용합니다. 예를 들어, 주문 테이블에서 고객 ID와 주문 ID를 결합하여 고유한 주문을 식별하는 데 사용할 수 있습니다.
'개인 일정 > 공부' 카테고리의 다른 글
[Docker] 도커파일 작성 방법 (0) | 2023.09.22 |
---|---|
[Python] 파이썬의 내부구조 (0) | 2023.09.17 |
네트워크의 대역폭이란 (0) | 2023.09.03 |
[ML] 예측을 할 수 있는 방법 (0) | 2023.08.27 |
머신러닝과 딥러닝의 차이 (0) | 2023.08.20 |