<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://dbstudy.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=%ED%8C%8C%ED%8B%B0%EC%85%98_%EC%9D%B8%EB%8D%B1%EC%8A%A4_%EC%B5%9C%EC%A0%81%ED%99%94_%EB%B0%A9%EB%B2%95</id>
	<title>파티션 인덱스 최적화 방법 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://dbstudy.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=%ED%8C%8C%ED%8B%B0%EC%85%98_%EC%9D%B8%EB%8D%B1%EC%8A%A4_%EC%B5%9C%EC%A0%81%ED%99%94_%EB%B0%A9%EB%B2%95"/>
	<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8C%8C%ED%8B%B0%EC%85%98_%EC%9D%B8%EB%8D%B1%EC%8A%A4_%EC%B5%9C%EC%A0%81%ED%99%94_%EB%B0%A9%EB%B2%95&amp;action=history"/>
	<updated>2026-05-08T19:56:06Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8C%8C%ED%8B%B0%EC%85%98_%EC%9D%B8%EB%8D%B1%EC%8A%A4_%EC%B5%9C%EC%A0%81%ED%99%94_%EB%B0%A9%EB%B2%95&amp;diff=56&amp;oldid=prev</id>
		<title>Oracle: 새 문서: Oracle 데이터베이스에서 파티션 인덱스 최적화는 파티션 테이블과 연관된 인덱스의 성능을 향상시키기 위한 필수적인 작업입니다. 올바른 인덱스 전략은 쿼리 성능, 관리 용이성, DML 성능 등을 크게 개선할 수 있습니다. 아래는 파티션 인덱스 최적화 방법입니다.  1. 인덱스 유형 선택  파티션 테이블에 대해 올바른 인덱스 유형을 선택하는 것이 최적화의 핵심입니...</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8C%8C%ED%8B%B0%EC%85%98_%EC%9D%B8%EB%8D%B1%EC%8A%A4_%EC%B5%9C%EC%A0%81%ED%99%94_%EB%B0%A9%EB%B2%95&amp;diff=56&amp;oldid=prev"/>
		<updated>2024-11-23T01:10:13Z</updated>

		<summary type="html">&lt;p&gt;새 문서: Oracle 데이터베이스에서 파티션 인덱스 최적화는 파티션 테이블과 연관된 인덱스의 성능을 향상시키기 위한 필수적인 작업입니다. 올바른 인덱스 전략은 쿼리 성능, 관리 용이성, DML 성능 등을 크게 개선할 수 있습니다. 아래는 파티션 인덱스 최적화 방법입니다.  1. 인덱스 유형 선택  파티션 테이블에 대해 올바른 인덱스 유형을 선택하는 것이 최적화의 핵심입니...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Oracle 데이터베이스에서 파티션 인덱스 최적화는 파티션 테이블과 연관된 인덱스의 성능을 향상시키기 위한 필수적인 작업입니다. 올바른 인덱스 전략은 쿼리 성능, 관리 용이성, DML 성능 등을 크게 개선할 수 있습니다. 아래는 파티션 인덱스 최적화 방법입니다.&lt;br /&gt;
&lt;br /&gt;
1. 인덱스 유형 선택&lt;br /&gt;
&lt;br /&gt;
파티션 테이블에 대해 올바른 인덱스 유형을 선택하는 것이 최적화의 핵심입니다.&lt;br /&gt;
&lt;br /&gt;
1.1 로컬 인덱스(Local Index)&lt;br /&gt;
&lt;br /&gt;
	•	각 파티션에 대해 별도의 인덱스를 유지.&lt;br /&gt;
	•	장점:&lt;br /&gt;
	•	파티션 프루닝(Partition Pruning)을 통해 특정 파티션만 검색.&lt;br /&gt;
	•	관리가 쉽고, 파티션 추가/삭제 시 인덱스를 재구성할 필요가 없음.&lt;br /&gt;
	•	적합한 경우:&lt;br /&gt;
	•	쿼리가 특정 파티션만 타겟팅하는 경우.&lt;br /&gt;
&lt;br /&gt;
CREATE INDEX idx_sales_local ON sales(sale_date) LOCAL;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.2 글로벌 인덱스(Global Index)&lt;br /&gt;
&lt;br /&gt;
	•	모든 파티션에 걸쳐 하나의 통합된 인덱스를 유지.&lt;br /&gt;
	•	장점:&lt;br /&gt;
	•	파티션을 넘어선 쿼리(예: 집계나 조인)가 많은 경우 적합.&lt;br /&gt;
	•	단일 인덱스를 활용해 범위 검색 성능을 최적화.&lt;br /&gt;
	•	단점:&lt;br /&gt;
	•	파티션을 추가/삭제/병합할 때 인덱스를 재구성해야 함.&lt;br /&gt;
&lt;br /&gt;
CREATE INDEX idx_sales_global ON sales(sale_date) GLOBAL;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.3 글로벌 파티션 인덱스(Global Partitioned Index)&lt;br /&gt;
&lt;br /&gt;
	•	글로벌 인덱스를 파티션화하여 관리 용이성과 성능을 모두 개선.&lt;br /&gt;
	•	적합한 경우:&lt;br /&gt;
	•	글로벌 검색 쿼리를 자주 사용하지만 데이터 관리 효율성도 중요한 경우.&lt;br /&gt;
&lt;br /&gt;
CREATE INDEX idx_sales_global_partitioned ON sales(sale_date)&lt;br /&gt;
GLOBAL PARTITION BY RANGE (sale_date) (&lt;br /&gt;
    PARTITION p1 VALUES LESS THAN (TO_DATE(&amp;#039;2023-01-01&amp;#039;, &amp;#039;YYYY-MM-DD&amp;#039;)),&lt;br /&gt;
    PARTITION p2 VALUES LESS THAN (TO_DATE(&amp;#039;2024-01-01&amp;#039;, &amp;#039;YYYY-MM-DD&amp;#039;))&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
2. 쿼리 패턴에 따른 설계&lt;br /&gt;
&lt;br /&gt;
인덱스 설계는 쿼리에서 사용하는 조건에 따라 달라집니다.&lt;br /&gt;
&lt;br /&gt;
2.1 파티션 키와 동일한 열에 인덱스 생성&lt;br /&gt;
&lt;br /&gt;
	•	WHERE 절에 자주 사용되는 파티션 키에 인덱스를 생성하면 파티션 프루닝을 극대화할 수 있습니다.&lt;br /&gt;
	•	예:&lt;br /&gt;
&lt;br /&gt;
CREATE INDEX idx_sales_partition_key ON sales(sale_date) LOCAL;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.2 파티션 키가 아닌 열 인덱싱&lt;br /&gt;
&lt;br /&gt;
	•	파티션 키 외의 열이 WHERE, JOIN, GROUP BY, ORDER BY에서 자주 사용되면 인덱스를 추가로 생성.&lt;br /&gt;
	•	예:&lt;br /&gt;
&lt;br /&gt;
CREATE INDEX idx_sales_amount ON sales(amount) LOCAL;&lt;br /&gt;
&lt;br /&gt;
3. 인덱스 유지보수 최소화&lt;br /&gt;
&lt;br /&gt;
파티션 테이블의 관리 작업(예: 파티션 추가/삭제/병합)으로 인해 인덱스 유지보수 비용이 증가할 수 있습니다. 이를 최소화하려면:&lt;br /&gt;
&lt;br /&gt;
3.1 로컬 인덱스를 선호&lt;br /&gt;
&lt;br /&gt;
	•	파티션 관리 작업 시 글로벌 인덱스는 재구성이 필요하지만 로컬 인덱스는 영향을 받지 않습니다.&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE sales DROP PARTITION p_old;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.2 글로벌 인덱스 재구성 자동화&lt;br /&gt;
&lt;br /&gt;
	•	글로벌 인덱스를 사용하는 경우, ONLINE 옵션으로 다운타임 없이 인덱스를 재구성.&lt;br /&gt;
&lt;br /&gt;
ALTER INDEX idx_sales_global REBUILD ONLINE;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.3 자동 인덱스 관리 도구 사용&lt;br /&gt;
&lt;br /&gt;
	•	Oracle의 Automatic Indexing 기능을 활용하여 최적의 인덱스를 자동 생성 및 관리.&lt;br /&gt;
&lt;br /&gt;
4. 로우 이동 방지&lt;br /&gt;
&lt;br /&gt;
글로벌 인덱스를 사용하는 경우, 파티션 간 데이터 이동(Row Movement)이 발생하면 인덱스가 비효율적으로 작동할 수 있습니다. 이를 방지하려면:&lt;br /&gt;
	•	ROW MOVEMENT를 비활성화:&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE sales DISABLE ROW MOVEMENT;&lt;br /&gt;
&lt;br /&gt;
5. 인덱스 파티셔닝과 서브파티셔닝&lt;br /&gt;
&lt;br /&gt;
5.1 서브파티션 인덱스&lt;br /&gt;
&lt;br /&gt;
	•	복합 파티션 테이블의 경우, 서브파티션별로 인덱스를 나누어 더 세밀한 관리 가능.&lt;br /&gt;
&lt;br /&gt;
CREATE INDEX idx_sales_subpartition ON sales(region) LOCAL;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.2 인덱스 압축&lt;br /&gt;
&lt;br /&gt;
	•	데이터 중복이 많은 경우 인덱스를 압축하여 저장 공간을 절약하고 성능을 향상.&lt;br /&gt;
&lt;br /&gt;
CREATE INDEX idx_sales_compressed ON sales(sale_date) LOCAL COMPRESS 2;&lt;br /&gt;
&lt;br /&gt;
6. 파티션 프루닝(Partition Pruning) 활용&lt;br /&gt;
&lt;br /&gt;
	•	쿼리가 특정 파티션만 검색하도록 설계하면 성능이 크게 향상됩니다.&lt;br /&gt;
	•	프루닝이 효과적으로 작동하려면:&lt;br /&gt;
	•	WHERE 조건이 파티션 키와 직접적으로 연결.&lt;br /&gt;
	•	EXPLAIN PLAN으로 파티션 스캔 동작 확인:&lt;br /&gt;
&lt;br /&gt;
EXPLAIN PLAN FOR SELECT * FROM sales WHERE sale_date &amp;gt;= TO_DATE(&amp;#039;2023-01-01&amp;#039;, &amp;#039;YYYY-MM-DD&amp;#039;);&lt;br /&gt;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);&lt;br /&gt;
&lt;br /&gt;
7. 통계 수집&lt;br /&gt;
&lt;br /&gt;
정확한 실행 계획 생성을 위해 정기적으로 인덱스와 파티션 통계를 수집하세요.&lt;br /&gt;
&lt;br /&gt;
BEGIN&lt;br /&gt;
    DBMS_STATS.GATHER_INDEX_STATS(&amp;#039;SCHEMA_NAME&amp;#039;, &amp;#039;INDEX_NAME&amp;#039;);&lt;br /&gt;
END;&lt;br /&gt;
&lt;br /&gt;
8. DML 작업과 인덱스 영향 최소화&lt;br /&gt;
&lt;br /&gt;
8.1 대량 삽입 전 인덱스 비활성화&lt;br /&gt;
&lt;br /&gt;
	•	대량 데이터 삽입 시 인덱스를 비활성화한 후 다시 활성화하여 삽입 속도를 높임.&lt;br /&gt;
&lt;br /&gt;
ALTER INDEX idx_sales_local UNUSABLE;&lt;br /&gt;
ALTER INDEX idx_sales_local REBUILD;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8.2 파티션 단위 DML 처리&lt;br /&gt;
&lt;br /&gt;
	•	데이터를 파티션별로 나누어 작업하여 성능 최적화.&lt;br /&gt;
&lt;br /&gt;
9. 인덱스 모니터링&lt;br /&gt;
&lt;br /&gt;
	•	V$OBJECT_USAGE를 사용하여 인덱스 활용도를 모니터링하고 사용되지 않는 인덱스를 제거.&lt;br /&gt;
&lt;br /&gt;
ALTER INDEX idx_sales_local MONITORING USAGE;&lt;br /&gt;
SELECT * FROM V$OBJECT_USAGE WHERE INDEX_NAME = &amp;#039;IDX_SALES_LOCAL&amp;#039;;&lt;br /&gt;
ALTER INDEX idx_sales_local NOMONITORING USAGE;&lt;br /&gt;
&lt;br /&gt;
10. 쿼리 힌트를 사용한 인덱스 최적화&lt;br /&gt;
&lt;br /&gt;
	•	쿼리에서 특정 인덱스를 강제 사용하거나 제외하는 힌트를 활용.&lt;br /&gt;
&lt;br /&gt;
SELECT /*+ INDEX(sales idx_sales_local) */ * FROM sales WHERE sale_date = TO_DATE(&amp;#039;2023-01-01&amp;#039;, &amp;#039;YYYY-MM-DD&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
위의 방법을 따르면 파티션 테이블과 인덱스의 성능을 최적화할 수 있습니다. 로컬 인덱스를 선호하되 쿼리 패턴과 작업 부하에 맞는 설계가 핵심입니다.&lt;/div&gt;</summary>
		<author><name>Oracle</name></author>
	</entry>
</feed>