익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT 위키
검색
SQL 인덱스 관리
편집하기
IT 위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
고급
특수 문자
도움말
문단 제목
2단계
3단계
4단계
5단계
형식
넣기
라틴 문자
확장 라틴 문자
IPA 문자
기호
그리스 문자
그리스어 확장
키릴 문자
아랍 문자
아랍어 확장
히브리 문자
뱅골어
타밀어
텔루구어 문자
싱할라 문자
데바나가리어
구자라트 문자
태국어
라오어
크메르어
캐나다 원주민 언어
룬 문자
Á
á
À
à
Â
â
Ä
ä
Ã
ã
Ǎ
ǎ
Ā
ā
Ă
ă
Ą
ą
Å
å
Ć
ć
Ĉ
ĉ
Ç
ç
Č
č
Ċ
ċ
Đ
đ
Ď
ď
É
é
È
è
Ê
ê
Ë
ë
Ě
ě
Ē
ē
Ĕ
ĕ
Ė
ė
Ę
ę
Ĝ
ĝ
Ģ
ģ
Ğ
ğ
Ġ
ġ
Ĥ
ĥ
Ħ
ħ
Í
í
Ì
ì
Î
î
Ï
ï
Ĩ
ĩ
Ǐ
ǐ
Ī
ī
Ĭ
ĭ
İ
ı
Į
į
Ĵ
ĵ
Ķ
ķ
Ĺ
ĺ
Ļ
ļ
Ľ
ľ
Ł
ł
Ń
ń
Ñ
ñ
Ņ
ņ
Ň
ň
Ó
ó
Ò
ò
Ô
ô
Ö
ö
Õ
õ
Ǒ
ǒ
Ō
ō
Ŏ
ŏ
Ǫ
ǫ
Ő
ő
Ŕ
ŕ
Ŗ
ŗ
Ř
ř
Ś
ś
Ŝ
ŝ
Ş
ş
Š
š
Ș
ș
Ț
ț
Ť
ť
Ú
ú
Ù
ù
Û
û
Ü
ü
Ũ
ũ
Ů
ů
Ǔ
ǔ
Ū
ū
ǖ
ǘ
ǚ
ǜ
Ŭ
ŭ
Ų
ų
Ű
ű
Ŵ
ŵ
Ý
ý
Ŷ
ŷ
Ÿ
ÿ
Ȳ
ȳ
Ź
ź
Ž
ž
Ż
ż
Æ
æ
Ǣ
ǣ
Ø
ø
Œ
œ
ß
Ð
ð
Þ
þ
Ə
ə
서식 지정
링크
문단 제목
목록
파일
각주
토론
설명
입력하는 내용
문서에 나오는 결과
기울임꼴
''기울인 글씨''
기울인 글씨
굵게
'''굵은 글씨'''
굵은 글씨
굵고 기울인 글씨
'''''굵고 기울인 글씨'''''
굵고 기울인 글씨
SQL 인덱스 관리(SQL Index Management, 索引管理)은 관계형 데이터베이스에서 인덱스를 생성, 유지, 최적화하여 질의 성능을 향상시키는 작업을 의미한다. ==개요== 인덱스는 데이터베이스 테이블에서 특정 컬럼의 값을 기반으로 검색 속도를 향상시키기 위한 자료 구조이다. 인덱스를 적절히 관리하면 데이터 검색 시간이 대폭 단축되며, 부적절한 인덱스는 오히려 성능 저하의 원인이 될 수 있다. ==인덱스의 종류== *기본 인덱스(Primary Index) *보조 인덱스(Secondary Index) *고유 인덱스(Unique Index) *복합 인덱스(Composite Index) *함수 기반 인덱스(Function-based Index) *비트맵 인덱스(Bitmap Index) ==인덱스 생성== 인덱스는 일반적으로 CREATE INDEX 문을 사용하여 생성하며, 다음과 같은 방식으로 정의할 수 있다. CREATE INDEX idx_employee_name ON employees(name); 복합 인덱스는 다음과 같이 생성할 수 있다. CREATE INDEX idx_employee_dept_salary ON employees(department_id, salary); 고유 인덱스는 중복값을 허용하지 않는 인덱스로 다음과 같이 생성한다. CREATE UNIQUE INDEX idx_employee_email ON employees(email); ==인덱스 관리 전략== *사용률 분석: 잘 사용되지 않는 인덱스는 제거하여 저장 공간을 절약하고 DML 성능을 향상시킨다. *정기적 재구성(Rebuild): 데이터 변경이 많을 경우 인덱스의 조각화(fragmentation)를 줄이기 위해 재구성이 필요하다. *통계 정보 갱신: 옵티마이저가 최적의 실행 계획을 수립할 수 있도록 주기적으로 인덱스 통계 정보를 갱신한다. *자동 인덱스 관리: 일부 DBMS는 자동으로 인덱스를 생성·제거하는 기능을 제공한다(예: Oracle의 Automatic Indexing). *인덱스 조건 최적화: WHERE 절과 자주 결합되는 컬럼 중심으로 인덱스를 구성한다. ==인덱스 사용 모니터링== *실행 계획(EXPLAIN 또는 EXPLAIN PLAN)을 통해 쿼리가 인덱스를 사용하는지 확인 가능 예: EXPLAIN SELECT * FROM employees WHERE name = '김철수'; *쿼리 성능 도구(SQL Server Profiler, Oracle AWR 등)로 인덱스 활용도 측정 *DMVs(Dynamic Management Views)나 시스템 뷰를 통해 인덱스 통계 확인 예: SELECT * FROM sys.dm_db_index_usage_stats WHERE object_id = OBJECT_ID('employees'); ==인덱스 제거== 불필요한 인덱스는 DROP INDEX 문을 사용하여 제거할 수 있으며, 다음과 같은 경우 인덱스를 제거한다. *조회 빈도가 낮고 DML 작업이 많은 경우 *다른 인덱스와 기능이 중복되는 경우 *성능 모니터링 결과 비용만 증가시키는 경우 예: DROP INDEX idx_employee_name ON employees; ==인덱스가 사용되는 쿼리 예시== *단일 컬럼 인덱스를 활용한 예 SELECT * FROM employees WHERE name = '홍길동'; *복합 인덱스를 활용한 예 SELECT * FROM employees WHERE department_id = 10 AND salary > 5000; *LIKE 연산에 대한 인덱스 사용 (전방 일치의 경우에만) SELECT * FROM employees WHERE name LIKE '김%'; *함수 기반 인덱스가 필요한 예 SELECT * FROM employees WHERE UPPER(name) = '홍길동'; -- 위 쿼리는 일반 인덱스를 사용하지 못하므로, 다음과 같이 인덱스를 생성해야 한다. CREATE INDEX idx_upper_name ON employees(UPPER(name)); ==주의사항== *너무 많은 인덱스는 삽입, 갱신, 삭제 시 부하를 증가시킨다. *넓은 범위를 조회하는 쿼리에는 인덱스 효율이 낮을 수 있다. *함수나 연산이 적용된 컬럼에는 일반 인덱스가 작동하지 않을 수 있다. ==같이 보기== *[[SQL 최적화]] *[[관계형 데이터베이스]] *[[쿼리 실행 계획]] *[[데이터베이스 정규화]] *[[데이터베이스 트랜잭션]] ==참고 문헌== *Surajit Chaudhuri and Gerhard Weikum, "Rethinking Database System Architecture: Towards a Self-tuning RISC-style Database System", VLDB, 2000. *Thomas Connolly and Carolyn Begg, *Database Systems: A Practical Approach to Design, Implementation, and Management*, Pearson. ==각주== [[분류:데이터베이스]] [[분류:SQL]]
요약:
IT 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT 위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록