<?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=%EC%97%AD_%EC%9D%B8%EB%8D%B1%EC%8B%B1%28Inverted_Index%29</id>
	<title>역 인덱싱(Inverted Index) - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://dbstudy.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=%EC%97%AD_%EC%9D%B8%EB%8D%B1%EC%8B%B1%28Inverted_Index%29"/>
	<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EC%97%AD_%EC%9D%B8%EB%8D%B1%EC%8B%B1(Inverted_Index)&amp;action=history"/>
	<updated>2026-05-08T15:30:52Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EC%97%AD_%EC%9D%B8%EB%8D%B1%EC%8B%B1(Inverted_Index)&amp;diff=1713&amp;oldid=prev</id>
		<title>Oracle: /* 역 인덱싱(Inverted Index)의 작동 원리 */</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EC%97%AD_%EC%9D%B8%EB%8D%B1%EC%8B%B1(Inverted_Index)&amp;diff=1713&amp;oldid=prev"/>
		<updated>2026-03-13T02:13:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;역 인덱싱(Inverted Index)의 작동 원리&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026년 3월 13일 (금) 11:13 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l6&quot;&gt;6번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;6번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 역 인덱싱(Inverted Index)의 작동 원리 ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 역 인덱싱(Inverted Index)의 작동 원리 ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: &lt;/del&gt;예를들어 5천만건의 대용량 테이블에 Context Index를 생성하면 내부적으로 다음과 같은 구조의 보조 테이블(주로 `$I` 테이블)이 생성됩니다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 예를들어 5천만건의 대용량 테이블에 Context Index를 생성하면 내부적으로 다음과 같은 구조의 보조 테이블(주로 `$I` 테이블)이 생성됩니다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=sql&amp;gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=sql&amp;gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 토큰(Token) | 문서 ID 리스트 (DocID / RowID) |&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 토큰(Token) | 문서 ID 리스트 (DocID / RowID) |&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Oracle</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EC%97%AD_%EC%9D%B8%EB%8D%B1%EC%8B%B1(Inverted_Index)&amp;diff=1712&amp;oldid=prev</id>
		<title>Oracle: /* 역 인덱싱(Inverted Index)의 작동 원리 */</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EC%97%AD_%EC%9D%B8%EB%8D%B1%EC%8B%B1(Inverted_Index)&amp;diff=1712&amp;oldid=prev"/>
		<updated>2026-03-13T02:13:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;역 인덱싱(Inverted Index)의 작동 원리&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026년 3월 13일 (금) 11:13 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l6&quot;&gt;6번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;6번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 역 인덱싱(Inverted Index)의 작동 원리 ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 역 인덱싱(Inverted Index)의 작동 원리 ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 예를들어 5천만건의 대용량 테이블에 Context Index를 생성하면 내부적으로 다음과 같은 구조의 보조 테이블(주로 `$I` 테이블)이 생성됩니다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: &lt;/ins&gt;예를들어 5천만건의 대용량 테이블에 Context Index를 생성하면 내부적으로 다음과 같은 구조의 보조 테이블(주로 `$I` 테이블)이 생성됩니다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=sql&amp;gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=sql&amp;gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 토큰(Token) | 문서 ID 리스트 (DocID / RowID) |&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 토큰(Token) | 문서 ID 리스트 (DocID / RowID) |&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Oracle</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EC%97%AD_%EC%9D%B8%EB%8D%B1%EC%8B%B1(Inverted_Index)&amp;diff=1711&amp;oldid=prev</id>
		<title>Oracle: /* 역 인덱싱(Inverted Index)의 작동 원리 */</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EC%97%AD_%EC%9D%B8%EB%8D%B1%EC%8B%B1(Inverted_Index)&amp;diff=1711&amp;oldid=prev"/>
		<updated>2026-03-13T02:12:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;역 인덱싱(Inverted Index)의 작동 원리&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026년 3월 13일 (금) 11:12 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot;&gt;7번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;7번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 역 인덱싱(Inverted Index)의 작동 원리 ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 역 인덱싱(Inverted Index)의 작동 원리 ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 예를들어 5천만건의 대용량 테이블에 Context Index를 생성하면 내부적으로 다음과 같은 구조의 보조 테이블(주로 `$I` 테이블)이 생성됩니다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 예를들어 5천만건의 대용량 테이블에 Context Index를 생성하면 내부적으로 다음과 같은 구조의 보조 테이블(주로 `$I` 테이블)이 생성됩니다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=sql&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=sql&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 토큰(Token) | 문서 ID 리스트 (DocID / RowID) |&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 토큰(Token) | 문서 ID 리스트 (DocID / RowID) |&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| --- | --- |&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| --- | --- |&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Oracle</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EC%97%AD_%EC%9D%B8%EB%8D%B1%EC%8B%B1(Inverted_Index)&amp;diff=1710&amp;oldid=prev</id>
		<title>Oracle: 새 문서: == 역 인덱싱 (Inverted Index)  == * Oracle Text(Context Index)가 바로 &#039;역 색인(Inverted Index)&#039; 원리를 이용한 기술임. * 일반적인 B-Tree 인덱스가 책의 &#039;목차&#039;라면, 역 인덱스는 책 뒷부분의 **&#039;찾아보기(색인)&#039;**와 같습니다.  * 특정 단어가 어느 페이지(RowID)에 있는지 미리 지도로 그려두는 방식임. ----  === 역 인덱싱(Inverted Index)의 작동 원리 === * 예를들어 5천만건의 대용량 테이블에...</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EC%97%AD_%EC%9D%B8%EB%8D%B1%EC%8B%B1(Inverted_Index)&amp;diff=1710&amp;oldid=prev"/>
		<updated>2026-03-13T02:12:43Z</updated>

		<summary type="html">&lt;p&gt;새 문서: == 역 인덱싱 (Inverted Index)  == * Oracle Text(Context Index)가 바로 &amp;#039;역 색인(Inverted Index)&amp;#039; 원리를 이용한 기술임. * 일반적인 B-Tree 인덱스가 책의 &amp;#039;목차&amp;#039;라면, 역 인덱스는 책 뒷부분의 **&amp;#039;찾아보기(색인)&amp;#039;**와 같습니다.  * 특정 단어가 어느 페이지(RowID)에 있는지 미리 지도로 그려두는 방식임. ----  === 역 인덱싱(Inverted Index)의 작동 원리 === * 예를들어 5천만건의 대용량 테이블에...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 역 인덱싱 (Inverted Index)  ==&lt;br /&gt;
* Oracle Text(Context Index)가 바로 &amp;#039;역 색인(Inverted Index)&amp;#039; 원리를 이용한 기술임.&lt;br /&gt;
* 일반적인 B-Tree 인덱스가 책의 &amp;#039;목차&amp;#039;라면, 역 인덱스는 책 뒷부분의 **&amp;#039;찾아보기(색인)&amp;#039;**와 같습니다. &lt;br /&gt;
* 특정 단어가 어느 페이지(RowID)에 있는지 미리 지도로 그려두는 방식임.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 역 인덱싱(Inverted Index)의 작동 원리 ===&lt;br /&gt;
* 예를들어 5천만건의 대용량 테이블에 Context Index를 생성하면 내부적으로 다음과 같은 구조의 보조 테이블(주로 `$I` 테이블)이 생성됩니다.&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
| 토큰(Token) | 문서 ID 리스트 (DocID / RowID) |&lt;br /&gt;
| --- | --- |&lt;br /&gt;
| **KIM** | Row1, Row5, Row10... |&lt;br /&gt;
| **TEST** | Row1, Row2, Row8, Row10... |&lt;br /&gt;
| **OKOK** | Row3, Row7... |&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* 사용자가 `test`를 검색하면, 오라클은 5천만 건의 테이블을 다 읽는 대신 이 **역 인덱스 테이블에서 &amp;#039;TEST&amp;#039;라는 키 값을 찾아 해당 RowID만 콕 집어 가져옵니다.&lt;br /&gt;
----&lt;br /&gt;
==== &amp;#039;부분 일치&amp;#039;를 위한 역 인덱싱 심화 (Bigram / Trigram) ====&lt;br /&gt;
예를들어 데이터가  `=3=3=3=` 이나 `testtest`처럼 단어 경계가 모호한 경우, 일반적인 단어 단위 역 인덱싱으로는 한계가 있습니다. 이때는 **n-gram** 방식을 역 인덱스에 적용해야 합니다.&lt;br /&gt;
&lt;br /&gt;
* **기능:** 문자열을 n글자씩 쪼개서 인덱싱합니다.&lt;br /&gt;
* **설정 방법 (Oracle Text 기준):**&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
BEGIN&lt;br /&gt;
  -- 데이터를 글자 단위로 쪼개는 LEXER 설정&lt;br /&gt;
  CTX_DDL.CREATE_PREFERENCE(&amp;#039;my_lexer&amp;#039;, &amp;#039;BASIC_LEXER&amp;#039;);&lt;br /&gt;
  CTX_DDL.SET_ATTRIBUTE(&amp;#039;my_lexer&amp;#039;, &amp;#039;MIXED_CASE&amp;#039;, &amp;#039;YES&amp;#039;); -- 대소문자 구분 여부&lt;br /&gt;
&lt;br /&gt;
  -- 핵심: 단어 중간 검색을 위한 인덱스 데이터 생성 설정&lt;br /&gt;
  CTX_DDL.CREATE_PREFERENCE(&amp;#039;my_wordlist&amp;#039;, &amp;#039;BASIC_WORDLIST&amp;#039;);&lt;br /&gt;
  CTX_DDL.SET_ATTRIBUTE(&amp;#039;my_wordlist&amp;#039;, &amp;#039;SUBSTRING_INDEX&amp;#039;, &amp;#039;YES&amp;#039;); &lt;br /&gt;
  CTX_DDL.SET_ATTRIBUTE(&amp;#039;my_wordlist&amp;#039;, &amp;#039;PREFIX_INDEX&amp;#039;, &amp;#039;YES&amp;#039;);&lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
-- 위 설정들을 적용하여 인덱스 생성&lt;br /&gt;
CREATE INDEX idx_tb_name_text ON tb_name(name)&lt;br /&gt;
INDEXTYPE IS CTXSYS.CONTEXT&lt;br /&gt;
PARAMETERS (&amp;#039;LEXER my_lexer WORDLIST my_wordlist SYNC (ON COMMIT)&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 역 인덱싱 도입 시 성능 변화 (예상) ===&lt;br /&gt;
&lt;br /&gt;
* Full Scan (기존): 5천만 건 전체 블록 I/O 발생 → **수십 초~분 단위**&lt;br /&gt;
* Inverted Index (개선): 인덱스에서 키워드 탐색 후 해당 Row만 Fetch → **0.x초~수 초 이내**&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== 직접 구현하는 방식 (작동방식 원리 이해를 위해) ====&lt;br /&gt;
&lt;br /&gt;
* 만약 Oracle Text라는 기능을 쓰지 않고 SQL/테이블 구조로만 역 인덱싱을 흉내 내려면 다음과 같은 설계가 필요합니다 (권장하지는 않지만 이론적으로 가능합니다).&lt;br /&gt;
&lt;br /&gt;
# 맵핑 테이블 생성: `(word VARCHAR2(100), target_rowid ROWID)` 구조의 테이블 생성.&lt;br /&gt;
# 데이터 분해: `name` 컬럼의 데이터를 공백이나 특정 단위로 쪼개서 맵핑 테이블에 `INSERT`.&lt;br /&gt;
# 조회: 맵핑 테이블에서 `word = &amp;#039;test&amp;#039;`로 조회하여 원본 테이블과 `JOIN`.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; **현실적인 조언:** 5천만 건의 데이터를 직접 SQL로 쪼개서 관리하는 것은 동기화와 저장 공간 문제로 매우 어렵습니다. 오라클이 공식 지원하는 **Oracle Text**를 사용하시는 것이 가장 안정적인 역 인덱싱 구현 방법입니다.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* 역 인덱싱(Oracle Text)을 적용하기 위해 **현재 운영 환경의 Tablespace 여유 공간**이나 **DML(입력/수정) 발생 빈도**를 체크해 보시는 것이 좋습니다.&lt;/div&gt;</summary>
		<author><name>Oracle</name></author>
	</entry>
</feed>