MySQL 인덱스 삭제 ALTER vs DROP
인덱스(Index)는 데이터 검색 성능을 향상시키는 핵심 요소이지만, 불필요하거나 비효율적인 인덱스는 삭제하는 것이 데이터 처리 성능에 도움이 될 수 있습니다. 이 글에서는 MySQL에서 인덱스를 삭제하는 두 가지 방법과 주의사항을 정리해 드립니다.
✅ 1. 인덱스 삭제 방법 요약
| 삭제 방법 | 문법 | 설명 |
|---|---|---|
| ALTER 문 | ALTER TABLE 테이블명 DROP INDEX 인덱스명; |
가장 일반적인 방식 |
| DROP 문 | DROP INDEX 인덱스명 ON 테이블명; |
내부적으로 ALTER 문으로 처리됨 |
🔧 2. ALTER 문으로 인덱스 삭제
문법
ALTER TABLE 테이블명
DROP INDEX 인덱스명;
예제
ALTER TABLE Reservation
DROP INDEX NameIdx;
→ Reservation 테이블에서 NameIdx 인덱스를 삭제
🗑️ 3. DROP 문으로 인덱스 삭제
문법
DROP INDEX 인덱스명 ON 테이블명;
예제
DROP INDEX IdIdx ON Reservation;
→ Reservation 테이블에서 IdIdx 인덱스를 삭제
🔍 4. 인덱스 삭제 확인
삭제가 완료되었는지 확인하려면 다음 명령어를 사용하세요:
SHOW INDEX FROM Reservation;
→ 현재 Reservation 테이블에 남아 있는 인덱스를 확인할 수 있습니다.
⚠️ 5. 주의사항
❗ 5.1. PRIMARY KEY 삭제는 다르게 처리
ALTER TABLE 테이블명
DROP PRIMARY KEY;
- PRIMARY KEY는 인덱스와 동시에 동작하므로 단순 DROP INDEX로는 삭제할 수 없습니다.
❗ 5.2. 삭제 시 성능 영향 고려
| 항목 | 영향 |
|---|---|
| 인덱스 삭제 | 검색 속도 저하 가능성 |
| 반면 | 삽입·수정·삭제 속도는 개선될 수 있음 |
| 권장 | 자주 사용되지 않는 인덱스만 삭제 |
💡 6. 실전 예제
🔹 불필요한 인덱스 제거
ALTER TABLE Orders
DROP INDEX OrderDateIdx;
→ OrderDateIdx 인덱스가 자주 사용되지 않을 경우 성능 최적화 가능
🔹 기본 키 삭제 후 재정의
ALTER TABLE Customer
DROP PRIMARY KEY;
ALTER TABLE Customer
ADD PRIMARY KEY (CustomerID);
→ 기존 기본 키를 변경할 때 필요한 절차
🧾 7. 요약 정리
- 인덱스 삭제 문법
ALTER TABLE 테이블명 DROP INDEX 인덱스명;DROP INDEX 인덱스명 ON 테이블명;
- 삭제 여부 확인:
SHOW INDEX FROM 테이블명; - 주의 사항
- PRIMARY KEY는
DROP PRIMARY KEY로 별도 처리 - 삭제 전 인덱스의 사용 빈도 확인 필요
- PRIMARY KEY는
질문 정리
❓ 인덱스를 삭제하면 데이터가 사라지나요?
아니요. 인덱스는 검색 성능만 향상시키는 구조이며, 삭제해도 데이터는 유지됩니다.
❓ 삭제한 인덱스는 복구할 수 있나요?
자동 복구는 불가하며, 동일한 문법으로 다시 생성해야 합니다.
❓ 인덱스가 많은 게 무조건 좋은가요?
아니요. 너무 많은 인덱스는 오히려 성능 저하를 초래할 수 있습니다. 사용 빈도를 기준으로 정리하세요.
댓글남기기