2010-03-23 8 views
6

DB Link를 통해 원격으로 여러 테이블에 액세스합니다. 그것들은 매우 정규화되어 있으며 각각의 데이터는 유효 일자가 매겨져 있습니다. 각 테이블에있는 수백만 개의 레코드 중에서 ~ 50k 개의 하위 세트 만 현재 레코드입니다.인덱스를 추가 할 수없는 테이블에 대한 쿼리의 속도를 높이려면 어떻게합니까?

테이블은 인덱스를 추가하거나 테이블에 어떤 방식 으로든 변경하면 큰 효과를내는 상용 제품에 의해 내부적으로 관리됩니다.

이러한 테이블에 대한 액세스 속도가 빨라지는 이유는 무엇입니까?

+1

해당 프로그램은 또한 분할 된 테이블을 차단합니까? 왜냐하면 그렇지 않다면, 그것은 갈 길일 것입니다. – kurast

답변

9

DB 링크를 통해 materialized view 테이블의 일부 하위 집합을 만든 다음 해당 테이블에서 쿼리를 시도 할 수 있습니다.

2

더 이상 최신 데이터를 보관하지 않습니다. (또는 만족스럽지 않거나 요구 사항에 맞는 스 태니스 스레숄드를 초과하는 데이터)

4

계획을 살펴 봐야합니다. 조인 순서를 변경하거나, 조건을 추가하거나, 힌트를 제공하여 설명 계획을 사용하지 않고 느린 이유를 알 수 없으므로 작성할 수있는 경우조차 모릅니다. 빠릅니다.

2

필요한 기록을 자신의 데이터베이스/테이블에 일일 덤프 할 수 있습니까?

6

난 당신이 바위 여기 힘든 곳이 사이에 갇혀 있다고 생각하지만, 과거에 다음이 나를 위해 일했습니다

당신은 지정된 간격으로 현재 데이터의 스냅 샷을 아래로 당길 수

, 매 시간마다 또는 야간 등 어떤 방식 으로든 작동하며 필요에 따라 자신의 테이블에 색인을 추가하십시오. 데이터에 실시간으로 액세스해야하는 경우 모든 현재 레코드를 임시 테이블로 가져 와서 필요에 따라 인덱싱 할 수 있습니다.

하나의 데이터베이스에서 자신의 데이터베이스로 복사하는 데 추가되는 오버 헤드로 실제 이익이 줄어들지 만 그만한 가치가 있습니다.

1

구체화/인덱싱 된 뷰를 만드는 방법은 무엇입니까? 그것은 조금 도움이 될 것입니다.

+1

인덱싱 된 뷰는 SQL Server 용어로, Oracle에서는 구체화 된 뷰입니다. –

관련 문제