다음을 통해 공유


데이터베이스 서버로 레코드 선택 푸시다운

보고서 처리 속도를 향상시키는 방법의 핵심은 데이터베이스에서 반환되는 데이터의 양을 제한하는 것입니다. 이 작업을 수행하기 위한 기본 도구는 레코드 선택 수식입니다.

Crystal Reports에서 제공하는 SQL 데이터 소스용 드라이버는 데이터베이스 서버에 레코드 선택을 "푸시다운"할 수 있게 합니다. SQL 데이터 소스에 따라 보고서에 레코드 선택 수식을 지정하면 Crystal Reports는 해당 수식을 분석하여 SQL 쿼리를 생성한 다음 해당 SQL 쿼리를 데이터베이스 서버에 전달합니다. 그런 후 다음의 두 단계에 따라 레코드 선택이 처리됩니다.

  • 데이터베이스 서버가 SQL 쿼리를 처리하고 Crystal Reports에 레코드 집합을 반환할 때 레코드 선택의 첫 번째 단계가 발생합니다.
  • 두 번째 단계에서, Crystal Reports는 데이터베이스 서버에서 반환된 레코드 집합을 사용하여 로컬에서 레코드 선택 수식의 결과를 다시 구합니다.

데이터베이스 서버는 일반적으로 워크스테이션보다 빠른 컴퓨터이므로 첫 번째 단계에서 서버가 처리할 수 있는 레코드 선택 수식을 지정하는 것이 좋습니다. 이렇게 하면 두 번째 단계에 로컬 컴퓨터에서 이루어지는 레코드 선택이 최소화됩니다. 서버에 푸시다운할 수 있는 레코드 선택 종류는 다음과 같습니다.

  • 인덱싱된 필드 및 인덱싱되지 않은 필드가 있는 선택(인덱싱된 필드는 더 빠른 응답을 제공함)
  • AND 및 OR 절이 있는 SQL 쿼리
  • 레코드 선택을 위해 수식 계산을 수행하는 SQL 식 필드. SQL Server에서 지원하는 SQL 식 형식에 대해서는 서버에 제공되는 설명서를 참조하십시오.

레코드 선택 푸시다운

이 예제에서는 데이터베이스 서버로 푸시다운할 수 있는 레코드 선택 수식 작성의 장점을 보여 줍니다.

Xtreme 샘플 데이터베이스의 주문 테이블에는 2,192개의 레코드가 있습니다. 이 중 181개는 주문일이 2001년 이전입니다. 이러한 레코드만 사용하여 보고서를 만드는 경우를 가정해 봅니다. 다음 레코드 선택 수식을 사용할 수 있습니다.

Year ({Orders.Order Date}) < 2001

생성된 SQL 쿼리는 2,192개의 레코드를 모두 Crystal Reports로 보낸 다음 레코드 선택 수식을 사용하여 이 레코드를 181개로 줄입니다. 이를 확인하려면 데이터베이스 메뉴에서 SQL 쿼리 표시를 클릭하고 SQL 쿼리에 WHERE 절이 없는지 확인하십시오. 이것은 Crystal Reports가 WHERE 절에서는 Year () 함수를 푸시다운할 수 없기 때문입니다.

또한 다음 레코드 선택 수식도 동일한 보고서를 생성합니다.

{Orders.Order Date} < #Jan 1, 2001#

그러나 이 레코드 선택 수식은 데이터베이스 서버에서 수행될 수 있으므로 푸시다운됩니다. 생성된 SQL 쿼리는 Crystal Reports에 181개의 레코드만 보냅니다. 따라서 Crystal Reports에서 레코드 선택 수식을 평가할 때 다른 레코드를 제거할 필요가 없습니다. 데이터베이스 메뉴에서 SQL 쿼리 표시를 클릭하고 결과로 생성되는 SQL 쿼리에 WHERE 절이 들어 있는지 확인합니다.

이 예제에서 볼 수 있듯이 레코드 선택 수식을 수정하여 보고서 처리 속도를 향상시킬 수 있습니다. 이 경우에 두 수식은 모두 같은 보고서를 생성하지만 두 번째 수식의 경우 데이터베이스 서버가 데이터를 직접 처리할 때 제공할 수 있는 성능 및 최적화를 활용할 수 있습니다.

레코드 선택 성능 팁

레코드 선택 요청을 설정할 때는 성능과 관련된 다음 항목을 고려하십시오.

일반

  • 레코드 선택을 푸시다운하려면 보고서 옵션 대화 상자에서(포함된 Crystal Reports Designer를 마우스 오른쪽 단추로 클릭하고 보고서를 가리킨 다음, 보고서 옵션 선택) 속도를 위해 인덱스 또는 서버 사용을 선택해야 합니다.

  • 레코드 선택 수식에서 매개 변수 필드가 아닌 필드에서는 데이터 형식 변환을 수행하지 마십시오.

    예를 들어, ToText( )를 사용하여 숫자 데이터베이스 필드를 문자열 데이터베이스 필드로 변환하지 마십시오.

  • 상수 식을 사용하는 일부 레코드 선택 수식을 푸시다운할 수 있습니다.

SQL 데이터베이스

  • 인덱스 필드 또는 비인덱스 필드에 대해 레코드 선택을 푸시다운할 수 있습니다.
  • 인덱스 필드를 사용하면 서버 응답 속도가 빨라집니다.
  • AND 및 OR 절을 푸시다운할 수 있습니다.
  • 일부 형식의 포함 수식을 포함하는 레코드 선택 수식은 푸시다운할 수 있습니다.
  • SQL 식 필드를 사용하여 레코드 선택에 필요한 수식 계산을 푸시다운할 수 있습니다.
  • 데이터베이스 메뉴에서 SQL 쿼리 표시를 클릭하고 데이터베이스 서버로 보낼 SQL 쿼리를 봅니다.