2012-03-26 4 views
0

보고 응용 프로그램을 쿼리해야하는 다소 큰 테이블이 있습니다. 대부분의 경우 사용자는 지난 7 일간의 데이터에 관심을 갖지만, 지금은 오래된 데이터 (아카이브 데이터)를 쿼리 할 수 ​​있기를 원합니다. 모든 사람들이 최근 데이터에 대해 빠르게 타오르는 것을 원하지만 아카이브 기록을 기다릴 필요가 없다면 필자는 분할 된 뷰 (data)와 두 개의 테이블 (data_current 및)으로 잘되어야한다고 생각합니다.지난 7 일 동안 분할 된 뷰를 만들고 유지 관리하고 SQL Server 2005에서 레코드를 보관하는 방법은 무엇입니까?

초기 테이블 (제약 조건 및 모두)과보기를 만드는 방법을 알고 있습니다. 일일 유지 관리 자동화 (이전 데이터를 _current에서 _archive으로 옮기는 방법)

+0

분할보기는 존재하지만 (얼마 동안 완료되었습니다.) 그러나 그들은 못생긴 신조입니다. [Partitioned Table] (http://msdn.microsoft.com/en-us/library/ms188730(v=sql.90) .aspx)을 고려 했습니까? –

+0

분할 된 뷰를 사용하여 원하는 것을 쉽게 얻을 수 있다고 생각했습니다. 동료들도 함께 작업하기가 더 쉬울 것입니다. – Vlad

답변

0

sliding window pattern을 사용해야합니다. 테이블간에 파티션을 스왑하고 작업을 사용하여 실행을 예약하는 저장 프로 시저를 작성합니다.

+0

좋은 예제이지만보기가 업데이트 될 필요가 없기 때문에 (모든 삽입은'_current'를 통해 이루어지며, 업데이트는 없습니다.) 두 테이블에서 제약 조건을 삭제하는 것이 더 좋을 것입니다.'_current'에서 행을 _archive '테이블에 새로운 제약 조건을 다시 추가합니다. 나는 오프 피크 시간을 할 수있다. – Vlad

+0

파티션 테이블간에 행을 바꾸는 것은 실제로 데이터를 이동하는 것이 아니라 전체 파티션을 한 테이블에서 다른 테이블로 전환하는 것입니다. 그것은 매우 빠르고 확장 가능합니다. 그래서 나는 파티션 테이블 _current와 _archive와 뷰를이 테이블들의 합집합으로 사용하려고합니다. –