2010-12-16 6 views
0

데이터베이스를 2 천만 개 이상의 레코드가있는 데이터베이스 테이블 두 개를 합치면 페이징에 row_number()을 사용할 때 시간이 많이 걸리고 많은 리소스가 필요합니다! 어떻게 이러한 테이블 특징 부 (trait) 할 수 있습니다 (뷰 매개 변수를 지원하지 않음) 각 사용자에 대해 페이징 결과를 저장하는 인덱싱 된 뷰를 사용하여페이징 및 대용량 SQL 서버 테이블

  • 을 나는 사용자 별보기를 사용하는 경우이 데이터의 중복이 될 것입니다
  • 작은 테이블로 테이블을 나눕니다.

완벽한 솔루션이 있습니까?

+0

어떤 SQL Server 버전을 사용하고 있습니까? – Oded

+0

sql server 2008 enterprise – Hadad

+2

처음 시도하는 이유를 설명하면 대단히 도움이됩니다. 30M 행을 통해 페이지를 넘길 사용자는 없습니다. 귀하가 다루고있는 비즈니스 문제는 무엇입니까? 데이터 페이지를 탐색하는 이유는 무엇입니까? 그들은 무엇을 찾기를 희망합니까? 페이징 된 데이터 솔루션이 필요한 이유는 무엇입니까? –

답변

2

OPTION FAST(n)을 사용하면 해당 레코드 수를 제공하도록 쿼리가 최적화됩니다. 이전에 성공으로 이것을 사용하여 +20 백만 레코드가있는 테이블에서 실행 시간을 분에서 밀리 초으로 낮추었습니다.

그러나 1,000,000 번째 레코드 인 10,000 번째 페이지에이를 사용하면 작동하지 않습니다. 사용자가 이와 같은 작업을 원한다면 주문한 스냅 샷을 만들어서 쿼리를 수행해야합니다.