2010-03-16 5 views
0

필자는 50k 개의 키워드 테이블을 하나 가지고 있으며 카운트 메커니즘에 따라이 키워드에 대한 자동 완성 기능을 제공하고 있습니다. 하지만 여전히 키워드를 얻는 것은 데이터베이스 파티션 빠르게 검색하기위한 수행되어야 할 것이다 어떤 방법으로Oracle 데이터베이스 파티션의 가장 좋은 방법은 무엇입니까?

....

도움 나를 PLZ .....

+0

DB에 실제 병목 현상이 있는지 확인 했습니까? 적절한 색인이 있습니까? 50k에서 첫 글자를 입력하면 해당 글자와 일치하는 평균 2000 개의 키워드를 얻습니다. – jva

답변

3

테이블에 .. 시간 소요 50k 행은 매우 작습니다. 파티션을 분할 할 필요가 없습니다.

일반적으로 쿼리 실행 계획과 알고리즘을 살펴 봐야합니다. 어쩌면 색인이 필요할 수도 있습니다. 또는 메모리 내 캐시.

1

몇 가지 생각 :

  • 50K 키워드 파티션, 스마트 인덱스 힘을 도움이되지 않습니다, 그 큰 테이블이 아닙니다.
  • 데이터가 DB와 통신의 모든 키를 누를 결과로, 당신의 자동 완성 가능성이 느리고 응답 될 것이다 DB에있는 경우는
  • 먼저 메모리에 적합한 데이터 구조를로드하여 최적의 운임 있습니다.
+0

일부로 키워드를 50k에서 500k로 늘리려 고합니다. 어떤 파티션이 빠른 resoponse를 제공합니까? ... 감사합니다, Murali – murali

+0

@murali :이 경우 DB를 쿼리하는 알고리즘 만 제공해야합니다 1 개 (또는 2 개 이상)의 문자가 입력 된 후 검색하는 데 필요한 데이터가 줄어 듭니다.하지만 500k는 여전히 큰 테이블이 아니며 항목 당 메모리가 평균 20MB 인 것으로 가정하면 여전히 약 100MB가 필요합니다 전체 테이블을 프리 페치하면 램의 – lexu

0

아마도 오래된 테이블 통계, 최적화 프로그램이 잘못된 계획을 선택할 수 있습니다. DBA 역할
exec dbms_stats.gather_table_stats (ownname => 'YOUR_OWNER', tabname => 'YOUR_TABLE');
alter system flush shared_pool;

그리고 다시 키워드를 얻기의 테스트 시간을 사용자의

보십시오.

P. 통계는 정기적으로 수집해야합니다.

관련 문제