MySQL 인덱스
인덱스는 데이터베이스에서 검색 성능을 향상시키는 중요한 도구입니다. 책의 목차처럼 작동하며, 테이블의 특정 열을 빠르게 검색할 수 있도록 돕습니다.
인덱스 기본 생성:
-- 방법
CREATE INDEX index_name
ON table_name (column_1, column_2, ...);
-- 예시
create index i_hire_date on employees(hire_date);
이 구문에서 괄호 안에는 자주 검색할 열을 지정합니다. 단일 열 인덱스 뿐 아니라 다중 열을 사용한 복합 인덱스도 생성 할 수 있습니다.
복합 인덱스:
-- 방법
CREATE INDEX idx_name
ON table_name (column1, column2);
-- 예시
create index i_composite on employees(first_name, last_name);
인덱스의 이점:
- 큰 데이터셋: 백만 개 이상의 레코드를 가진 데이터셋에서는 잘 설계된 인덱스가 검색 성능에 큰 차이를 만듭니다.
- 작은 데이터셋: 반대로 데이터셋이 작다면 인덱스의 유지 비용이 검색 성능 향상보다 클 수 있습니다.
주의 사항:
SQL 전문가들은 검색 속도와 실행 리소스 사이의 균형을 맞추는 것이 중요하다고 강조합니다. 특히, 인덱스가 많은 경우 성능을 저하시킬 수 있으므로 적절한 열을 신중하게 선택해야 합니다.
CASE 문
CASE 문은 SQL에서 조건문을 사용하여 여러 상황에 따라 다른 결과를 반환할 수 있도록 해줍니다.
예를 들어 모든 코딩에서 사용하는 IF 절과 비슷한 느낌입니다.
CASE 사용:
-- 방법
SELECT
column_name(s),
CASE
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
ELSE 'default_value'
END AS alias_name
FROM
table_name;
-- 예시
SELECT
emp_no,
first_name,
last_name,
CASE
WHEN gender = 'M' THEN 'Male' -- gender가 'M' 이면 'Male' 반환
ELSE 'Female' -- 모두 아니면 'Female' 반환
END AS gender -- 컬럼 이름
FROM
employees;
위 문법을 통해 하나 이상의 조건에 따라 결과값을 반환할 수 있으며, ELSE는 어떠한 조건도 충족 하지 않는 경우에 사용됩니다.
IF문 사용:
SELECT
emp_no,
first_name,
last_name,
-- True면 2번째 값 반환 False면 3번쨰 값 반환
IF(gender = 'M', 'Male', 'Female') AS gender
FROM
employees;
이렇듯 IF(조건, True일 경우, False일 경우)를 사용하여 조건문을 사용할 수도 있습니다.
COALESCE와 IFNULL 함수
- COALESCE(): 여러 값 중 첫 번째로 NULL이 아닌 값을 반환합니다.
- IFNULL(): 하나의 값이 NULL인지 체크하고, NULL일 경우 대체 값을 반환합니다.
자료와 실습 도움을 준 강의입니다. (Udemy: SQL - MySQL for Data Analytics and Business Intelligence)
이상입니다.
728x90
'Data Analyst > SQL' 카테고리의 다른 글
SQL - Window Function (RANK, DENSE_RANK, LAG, LEAD) (1) | 2024.09.25 |
---|---|
SQL - Window Functions (ROW_NUMBER) (0) | 2024.09.20 |
SQL - Trigger (0) | 2024.09.16 |
SQL - Local, Session, Global Variables (0) | 2024.09.16 |
SQL - Variables, Functions (1) | 2024.09.13 |