2014-04-21 3 views
0

거대한 데이터 (15GB)의 웹 사이트 텍스트 (HTML이 아님)가있는이 1 개의 테이블 중 2 개의 테이블이 있습니다. 나는이 10 개의 테이블 (관계 함을 가짐)을 색인화하려고합니다. 예 : select a.id, a.title, a.ipaddress, b.content from table1 a, table2 b 여기서 a.id = b.id;lucene 인덱싱 대용량 테이블이있는 대형 데이터베이스

여기서 문제는 색인 생성을 위해 Oracle 데이터베이스에서 데이터를 검색하는 데 70-80 시간이 걸리는 것입니다. 나는 rownum> 1 및 < 20000과 같은 서버 쪽 페이지 매김을 시도하고 매번 증가한다. 하지만 여전히 clob 데이터를 검색하기 때문에 엄청난 시간이 걸립니다. 그래서 두 개의 테이블을 별도의 C : \ index1, table2 C : \ index2로 구분하여 색인을 생성합니다. 두 개의 인덱스를 조합하여 데이터를 검색 할 수 있습니까?

이것이 최상입니까? 별도로 인덱싱하거나 단일 인덱싱을 사용합니까? 참고 : 데이터베이스의 데이터가 업데이트되지 않습니다. 그냥 최선의 방법이 필요해.

답변

1

두 개의 인덱스를 조합하여 데이터를 검색 할 수 있습니까?

예, 두 인덱스에서 데이터를 검색 할 수 있습니다.

각 색인에 대해 IndexReaders를 엽니 다. reader1과 reader2를 호출하십시오. 그런 다음 MultiReader을 사용하여 색인을 읽고 내용을 추가 할 수 있습니다.

MultiReader multiReader = new MultiReader(reader1, reader2); IndexSearcher searcher = new IndexSearcher(multiReader);

참조 : How to perform search over independent index sets and merge results?

입니다 최고? 별도로 인덱싱하거나 단일 인덱싱을 사용합니까? 참고 : 데이터베이스의 데이터가 업데이트되지 않습니다. 그냥 최선의 방법이 필요해.

DB의 데이터가 변경되지 않으므로 단일 색인을 사용하는 것이 좋습니다.

참고로, How to make indexing faster을보고 싶을 수도 있습니다.