MySQL 인덱스
MySQL에서 인덱스는 데이터베이스 테이블의 데이터 검색 속도를 향상시키기 위해 사용되는 자료구조임.
인덱스는 검색 엔진의 색인과 유사하게, 데이터베이스 내에서 데이터를 빠르게 찾을 수 있도록 도움.
인덱스를 사용하면 테이블의 모든 행을 차례대로 검사하는 대신, 효율적인 방법으로 특정 데이터 위치를 빠르게 찾아갈 수 있음.
MySQL 인덱스 종류
1. 기본 인덱스 (Primary Index)
기본키 인덱스는 테이블의 주요 검색 기준이 되는 열에 자동으로 생성됨.
각 행은 고유한 기본 키를 가지며, 이는 데이터의 무결성을 보장하는 데 중요한 역할을 함.
2. 보조 인덱스 (Secondary Index)
보조 키 인덱스는 기본 키 이외의 열에 생성될 수 있음.
이 인덱스는 보조 검색 경로를 제공하여 기본 키가 아닌 다른 열로도 빠른 검색을 가능하게 함.
3. 고유 인덱스 (Unique Index)
고유 키 인덱스는 열의 모든 값이 고유해야 하는 경우에 사용됨.
기본 키와 유사하지만, Null 값을 여러 개 허용할 수 있다는 점이 다름.
4. 완전 텍스트 인덱스 (Full-text Index)
텍스트 기반의 컨텐츠 검색을 위해 설계된 특수한 유형의 인덱스임.
MySQL에서는 MyISAM 및 InnoDB 스토리지 엔진에서 지원함.
MySQL 인덱스 구현
1. B-Tree 인덱스
가장 일반적인 인덱스 유형으로, B-Tree 구조를 사용함.
값의 부분적인 일치 검색과 전체 일치 검색, 범위 검색에 적합함.
2. 해시 인덱스
해시 테이블 기반의 인덱스로, 주로 메모리 내 데이터베이스에서 사용됨.
등가 검색(값의 완전한 일치)에는 매우 빠르지만, 범위 검색에는 적합하지 않음.
3. R-Tree 인덱스
공간적 데이터, 예를 들어 지리적 위치를 저장하는 데 사용됨.
GIS(지리 정보 시스템) 데이터 처리에 적합함.
4. 풀 스캔 vs 인덱스 스캔
4.1 풀 테이블 스캔
인덱스가 없거나 옵티마이저가 인덱스 사용을 결정하지 않을 때 전체 테이블을 검색함.
4.2 인덱스 스캔
쿼리의 조건과 일치하는 행을 찾기 위해 인덱스를 사용하여 검색함.
MySQL 인덱스 관리
1. 인덱스 생성
CREATE INDEX 명령어를 사용하여 새 인덱스를 만듦.
2. 인덱스 삭제
DROP INDEX 명령어를 사용하여 불필요한 인덱스를 제거함.
3. 인덱스 최적화
데이터 변경에 따라 인덱스의 효율이 떨어질 수 있으므로, 주기적으로 OPTIMIZE TABLE 명령을 실행하여 인덱스를 재구성할 필요가 있음.
MySQL 인덱스 성능과의 균형
인덱스는 검색 성능을 향상시키지만, 추가적인 디스크 공간을 사용함.
데이터 삽입이나 업데이트 시에 성능 저하를 일으킬 수 있음.
따라서, 인덱스는 신중하게 계획하고 관리해야 함.
MySQL 인덱스 정리
인덱스는 MySQL의 성능을 크게 향상시킬 수 있는 강력한 도구임.
하지만, 그 사용은 데이터의 특성과 요구에 맞춰 조정되어야 함.
MySQL 기본키
MySQL에서 기본키는 테이블 내 각 행을 고유하게 식별하는 데 사용되는 필드임.
기본키는 데이터의 무결성을 보장하며, 데이터베이스 설계의 중요한 부분임.
기본키로 지정된 필드는 중복된 값을 가질 수 없으며, Null 값을 허용하지 않음.
MySQL 기본키 특성
1. 유일성
기본키로 지정된 모든 값은 유일해야 함.
이는 같은 키 값을 갖는 두 행이 존재할 수 없다는 것을 의미함.
2. 불변성
일단 생성된 후 기본키는 변경되어서는 안됨.
기본키의 값 변경은 관련된 모든 외래키 관계에 영향을 미칠 수 있기 때문에, 데이터의 무결성을 위해 가능한 한 피해야 함.
3. Not Null
기본키 필드는 절대 Null 값을 가질 수 없음.
이는 기본키가 각 행을 식별하는 데 사용되므로, 값이 없는 상태가 될 수 없기 때문임.
MySQL 기본키의 구현
1. 단일 열 기본키
하나의 열만을 기본키로 사용하는 경우임.
예를 들어, 사용자 ID나 문서 번호 같은 고유 식별자가 이에 해당함.
2. 복합 열 기본키
두 개 이상의 열을 조합하여 기본키로 사용하는 경우임.
예를 들어, 외국에서 발행된 도서를 관리하는 테이블에서는 국가 코드와 도서 번호의 조합을 기본키로 사용할 수 있음.
MySQL 기본키의 SQL 구문
기본키를 설정하는 가장 일반적인 방법은 테이블 생성 시 PRIMARY KEY 키워드를 사용하는 것임.
CREATE TABLE Users (
UserID int NOT NULL,
Username varchar(255) NOT NULL,
Email varchar(255),
PRIMARY KEY (UserID)
);
기존 테이블에 기본키를 추가하려면 ALTER TABLE 구문을 사용함.
ALTER TABLE Users
ADD PRIMARY KEY (UserID);
MySQL 기본키와 인덱스
MySQL에서 기본키는 자동적으로 인덱스가 생성되는 열임.
이 인덱스는 데이터 검색 속도를 높이고, 데이터베이스의 성능을 최적화함.
기본키 인덱스는 테이블의 데이터를 물리적으로 재배열할 수 있으며, 이는 클러스터형 인덱스라고도 불림.
클러스터형 인덱스는 데이터의 물리적 순서를 인덱스의 순서와 일치시키므로 데이터 접근 속도를 크게 향상시킬 수 있음.
MySQL 기본키 사용 시 고려 사항
1. 성능
기본키는 데이터베이스의 성능에 큰 영향을 미침.
잘못 선택된 기본키는 시스템의 성능 저하를 초래할 수 있음.
2. 설계
기본키는 테이블 설계 초기 단계에서 신중하게 고려되어야 함.
한번 설정되면 변경하기 어렵기 때문에, 테이블 설계 시 기본키를 적절히 선택하는 것이 중요함.
3. 데이터 무결성
기본키를 통해 데이터 무결성이 유지됨.
기본키가 없는 테이블은 데이터 중복의 위험이 증가하며, 이는 데이터의 일관성과 정확성을 저해할 수 있음.
MySQL 기본키 정리
기본키는 데이터베이스 설계의 핵심 요소임.
데이터 관리와 무결성 유지에 중추적인 역할을 함.
따라서 기본키의 올바른 구현과 관리는 데이터베이스 시스템의 전반적인 성능과 안정성에 결정적인 영향을 미침.
'Database > SQL' 카테고리의 다른 글
[MySQL] Auto Increment, 컬럼 생성 옵션 종류 (0) | 2024.06.15 |
---|---|
[MySQL] 외래키, 복합키 (1) | 2024.06.15 |
[DB] 데이터 모델링, NoSQL (1) | 2024.06.08 |
[MySQL] MySQL 및 MariaDB 차이 (0) | 2024.06.07 |
[MySQL] 테이블 종류, 표준 SQL (0) | 2024.06.07 |