2010-08-08 1 views
4

나는 약 35 만 행이있는 테이블을 삭제하는 빠른 방법은 무엇. 각 테이블에는 약 35 개의 정수 값과 하나의 시간 값이 있습니다. (마지막 업데이트) 테이블에 두 개의 인덱스가 있습니다. 기본 - 테이블 열에서 두 개의 정수 값 사용 보조 - 기본 정수 + 다른 정수 값의 첫 번째 정수를 사용합니다.오래된 기록

날짜 필드에 따라 오래된 레코드 (약 2,000 만 개)를 삭제하고 싶습니다.

가장 빠른 방법은 무엇입니까? 1. 날짜 필드에 따라 삭제 하시겠습니까? 2. 날짜별로 다른 인덱스를 만든 다음 날짜별로 삭제하십시오.

데이터의 많은 부분을 한 번 삭제 한 다음 주 단위로 훨씬 작은 부분을 삭제합니다.

더 효율적으로 할 수있는 다른 방법이 있습니까?

답변

8

그것을 유지하려는 행을 포함하는 새로운 테이블을 만들 빠를 수도 이전 테이블을 삭제 한 후 물건을 속도 것 매주 삭제를 들어 새 테이블을 날짜 필드에 인덱스를

+0

우수 아이디어! dev 컴퓨터에서 어떻게 작동하는지 테스트 해 볼 것입니다. – Nir

3

이름을 바꿉니다.

0

가장 빠르지 만 (가장 쉬운 방법은 아닙니다.) - 내 생각에 레코드를 여러 개의 테이블을 날짜를 기준으로 분할하여 보관하는 것이 좋습니다. 주어진 주, 그리고 모든 일에 걸쳐 정기적 인 쿼리를위한 모든 테이블의 유니온 테이블을 가질 수 있습니다 (따라서 쿼리는 변경되지 않습니다). 매주 새로운 테이블을 만들고 유니온 테이블을 재정의 할 것입니다.

이전 레코드를 삭제하려면 이전 테이블의 레코드를 그대로두기 위해 유니온 테이블을 다시 만든 다음 삭제 된 레코드를 삭제하십시오 (파일 시스템에 따라 삭제하기 전에 잘라내십시오). 아마도 MySQL을 사용하는 가장 빠른 방법 일 것입니다.

그래도 관리 할 엉망 :