티스토리 뷰

Database

[Database] INDEX

daze1002 2025. 3. 23. 23:53
반응형

⚡ 1. INDEX (인덱스)

인덱스는 데이터 검색 속도를 향상시키기 위한 자료구조로, 테이블의 특정 컬럼에 포인터를 생성해 빠른 조회가 가능하도록 돕는다.


📌 1-1. 인덱스 생성

CREATE TABLE phone (
    phone_code INT PRIMARY KEY,
    phone_name VARCHAR(100),
    phone_price DECIMAL(10, 2)
);

✅ 단일 인덱스 생성

CREATE INDEX idx_name ON phone (phone_name);

✅ 복합 인덱스 생성

CREATE INDEX idx_name_price ON phone (phone_name, phone_price);

📋 인덱스 목록 조회

SHOW INDEX FROM phone;

⚙️ 1-2. 인덱스 활용

  • 인덱스를 활용하면 WHERE 절이나 JOIN 조건에서 검색 속도가 향상됨.
  • EXPLAIN으로 인덱스 사용 여부 확인 가능
EXPLAIN SELECT * FROM phone WHERE phone_name = 'iPhone14pro';

🔧 인덱스 최적화 (재구성)

  • 인덱스 파편화 시 성능 향상을 위해 재구성 수행
ALTER TABLE phone DROP INDEX idx_name;
ALTER TABLE phone ADD INDEX idx_name(phone_name);

✅ InnoDB 최적화

OPTIMIZE TABLE phone;

💡 인덱스 재구성은 성능을 향상시킬 수 있지만, 작업 중 테이블이 잠길 수 있으므로 신중히 실행해야 함


❌ 1-3. 인덱스 삭제

DROP INDEX idx_name ON phone;
SHOW INDEX FROM phone;

💡 인덱스 설계 시 유의사항

항목 설명
생성 시점 데이터가 많아질 컬럼 또는 WHERE/JOIN에 자주 쓰이는 컬럼
장점 검색 속도 향상
단점 저장 공간 차지, INSERT/UPDATE 시 성능 저하 가능
주의 너무 많은 인덱스는 오히려 성능 저하 요인이 될 수 있음

'Database' 카테고리의 다른 글

[Database] STORED PROCEDURE  (0) 2025.03.24
[Database] VIEW  (0) 2025.03.23
[Database] CONSTRAINTS  (0) 2025.03.23
[Database] DDL  (0) 2025.03.23
[Database] 데이터베이스 모델링  (1) 2025.03.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함