2011-11-16 3 views
1

SQL Server 2005 데이터베이스에 대한보기를 만들었으며이보기는 타사에서 제공 한보기를 기반으로합니다. 나는 JDBC 연결을 통해 우리의 응용 프로그램에서 그들을 표시하고있어 매우 느린 것 같습니다. 다른 방법을 시도하고이 경우 SQL (select into) 명령을 사용하여 응용 프로그램에서 데이터를 보는 것이 빠릅니다. 최선의 접근 방식에 대해 제게 조언 해 주실 수 있습니까?보기에 기반한보기가 느립니다.

어떻게 애플리케이션 성능을 향상시킬 수 있습니까?

  1. 인덱싱 된보기.
  2. SSIS를 사용하여 데이터베이스를 SQL Server 2008 R2로 가져옵니다.
  3. 그 밖의 무엇?

답변

1

속도 저하가 가장 먼저 발생한 부분을 이해해야합니다.

테이블에 데이터를 구체화하면 나중에 선택하는 것이 더 빠를 수 있지만 복사 속도가 느릴 수 있음을 의미합니다. 데이터가 천천히 변화한다면, 그것은 확실히 작동 할 수있는 설계 접근법입니다.

인덱스 된 뷰에는 데이터가 변경 될 때 업데이트해야하기 때문에 모든 인덱스가 쓰기 성능에 영향을줍니다.

여기에 두 개의 서버가있을 것 같습니다. 작성한보기가 서버 또는 2005 서버에 있는지 여부는 명확하지 않습니다. 한 서버에서 다른 연결된 서버의보기에 대한보기를 만드는 경우 엄격하게 필요한 것보다 더 많은 데이터가 서버간에 가져올 수 있습니다 (모든보기가 동일한 서버에 있고 함께 최적화 될 수있는 것과 비교할 때) .

2

쿼리 (쿼리 포함)의 성능을 향상시키기 위해 가장 좋은 방법은 SSMS에서 생성 된 쿼리 계획을 살펴 보는 것입니다. 가장 먼저 살펴볼 것은 인덱스 또는 테이블 스캔입니다. 이 중 하나를 볼 때 인덱스가 필요할 가능성이 높으며 인덱스에서 실제로 사용하기 위해 인덱스의 열을 포함해야하는 경우가 종종 있습니다.

인덱스 된 뷰는 엄청난 성능 향상을 가져올 수 있습니다. 그러나 Microsoft는 그 (것)들에 아주 많은 금지를 두었습니다, 실제로 그것을 실제로 사용하는 것은 매우 어렵습니다. 기본 테이블의 삽입/갱신/삭제 성능에도 영향을줍니다. 따라서 절충안이 있습니다.

별도의 테이블을 만드는 것이 이러한 쿼리를 매우 적은 횟수 만 실행하는 것이 아니라면 장기적이고 확장 가능한 방법이라고 생각합니다. 이 데이터를 복사하는 프로세스는 매우 리소스 집약적 일 수 있습니다.

-1

어떻게 응용 프로그램 성능을 향상시킬 수 있습니까?

  1. 인덱싱 된보기.
  2. SSIS를 사용하여 데이터베이스를 SQL Server 2008 R2로 가져옵니다.
  3. 그 밖의 무엇?

언급되지 않은 또 다른 옵션은

내 경험 비 인덱스 뷰는 일반적으로 일을 느리게 만드는 것입니다 및 인덱싱 된 뷰 인해 생성하기 어려운

전망를 사용하지 마십시오입니다 제한에.

보기를 사용해야하는 곳에 문제가 발생하면 대신 CTE 또는 인라인보기를 사용해보십시오.

+0

안녕하세요. 입력 해 주셔서 감사합니다. 제 3 자 db에서 이러한 뷰를 생성했으며 이러한 뷰는 뷰를 기반으로합니다. Shoud 나는 SSIS를 사용하여 SQL Server 인스턴스에 데이터를 가져옵니다. – user362283

+0

뷰를 기반으로 말할 때 ... 만든 뷰가 다른 뷰를 선택한다는 의미입니까? –

+0

예 각보기가 다른보기를 기반으로합니다. – user362283