2010-05-27 5 views
1

수백만 개의 행과 하나의 인덱스 (각 항목의 타임 스탬프)가있는 타사 응용 프로그램의 MySQL 테이블이 있습니다. 이제 타임 스탬프가 아닌 필드를 사용하여 데이터에 대한 무거운 자체 조인 및 쿼리를 수행하려고합니다. 원본 테이블에서 쿼리를 수행하면 데이터베이스가 크롤링되고 테이블에 인덱스를 추가하는 것은 옵션이 아닙니다. 또한, 나는 단지 1 주일보다 새로운 항목이 필요합니다.테이블의 "슬라이딩 윈도우"를 복사하는 좋은 전략은 무엇입니까?

쿼리를 효율적으로 수행하기위한 현재 전략은 필요한 인덱스가있는 별도의 테이블 (aux_table)을 사용하는 것입니다. 내 질문 : 다른 방법으로 쿼리를 수행 할 수 있습니까?, 그렇지 않은 경우 인덱스 된 테이블의 데이터를 효율적으로 업데이트하려면 어떻게합니까? aux_table 업데이트

지금까지 내가 찾은 두 가지 방법 :

  1. aux_table 잘라 내기 및 원래 테이블에서 원하는 데이터를 삽입합니다. 모든 색인을 다시 만들어야하기 때문에 그리 효율적이지 않습니다.
  2. aux_table에서 가장 큰 시간 소인을 점검하고 원본 테이블과 동일하거나 더 긴 시간 소인으로 모든 항목을 삽입하십시오. 때때로 오래된 항목을 삭제하십시오. 타임 스탬프가 더 큰 항목 만 복사하면 항목이 삭제됩니다 (마지막 업데이트 후에 원래 표에 삽입 된 타임 스탬프가 같은 항목 때문에).

답변

1

가능성 :

자동 또한 작은 테이블에 삽입 할 큰 테이블에 트리거를 추가합니다.

그러면 작은 테이블을 언제든지 적절한 시간 범위로 트리밍 할 수 있습니다.

+0

감사합니다. 정확하게이 문제를 해결 한 방법입니다. – chiborg

관련 문제