CREATE STATISTICS(Transact-SQL)

테이블이나 인덱싱된 뷰의 제공된 열 또는 열 집합에 관한 히스토그램 및 연관된 밀도 그룹(컬렉션)을 만듭니다. char, varchar, varchar(max), nchar, nvarchar, nvarchar(max), textntext 열을 기반으로 한 통계에 대한 문자열 요약 통계도 생성됩니다. 쿼리 최적화 프로그램에서는 이 통계 정보를 사용하여 데이터 검색 또는 업데이트에 최적의 계획을 선택합니다. 최적화 프로그램에서는 최신 통계를 통계를 통해 다양한 쿼리 계획의 비용을 평가하고 우수한 계획을 선택할 수 있습니다. SQL Server 2005의 통계에 대한 자세한 내용은 Microsoft TechNet의 Microsoft SQL Sever 2005에서 쿼리 최적화 프로그램에 사용되는 통계(Statistics Used by the Query Optimizer in Microsoft SQL Server 2005)를 참조하십시오.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

CREATE STATISTICS statistics_name 
ON { table | view } ( column [ ,...n ] ) 
    [ WITH 
        [ [ FULLSCAN 
          | SAMPLE number { PERCENT | ROWS } 
          | STATS_STREAM = stats_stream ] [ , ] ] 
        [ NORECOMPUTE ] 
    ] ;

인수

  • statistics_name
    만들 통계 그룹의 이름입니다. 통계 이름은 식별자에 적용되는 규칙을 준수해야 하며 만들어지는 해당 테이블이나 뷰에서 고유해야 합니다.
  • table
    명명된 통계를 만들 대상이 되는 테이블의 이름입니다. 테이블 이름은 식별자에 적용되는 규칙을 준수해야 합니다. tablecolumn이 연결된 테이블입니다. 테이블의 소유자 이름은 지정하지 않아도 됩니다. 정규화된 테이블 이름을 지정하면 다른 데이터베이스에 있는 테이블에 관한 통계도 만들 수 있습니다.
  • view
    명명된 통계를 만들 뷰의 이름입니다. 뷰에 관한 통계를 만들려면 먼저 뷰에 클러스터형 인덱스가 있어야 합니다. 뷰 이름은 식별자에 적용되는 규칙을 준수해야 합니다. viewcolumn이 연결된 뷰입니다. 뷰의 소유자 이름은 지정하지 않아도 됩니다. 정규화된 뷰 이름을 지정하면 다른 데이터베이스에 있는 뷰에 관한 통계도 만들 수 있습니다.
  • column
    통계를 만들 대상이 되는 열 또는 열 집합입니다. 인덱스 키로 지정할 수 있는 열도 다음과 같은 예외 경우에는 통계용으로 지정할 수 있습니다.

    • xml 열은 지정할 수 없습니다.
    • 결합된 열 값에 허용되는 최대 크기는 인덱스 키 값에 지정된 900바이트 한도를 초과할 수 없습니다.

    ARITHABORT 및 QUOTED_IDENTIFIER 데이터베이스 옵션이 ON으로 설정된 경우에만 계산 열을 지정할 수 있습니다. CLR 사용자 정의 형식 열은 이진 순서 지정이 지원될 경우에만 지정할 수 있습니다. 사용자 정의 유형 열에서 메서드 호출로 정의된 계산 열은 메서드가 결정적 메서드로 표시된 경우에 지정할 수 있습니다. CLR 사용자 정의 형식 열에 대한 자세한 내용은 CLR 사용자 정의 유형 작업을 참조하십시오.

  • FULLSCAN
    통계를 수집하기 위해 table이나 view의 모든 행을 읽어야 하는지를 지정합니다. FULLSCAN을 지정하면 SAMPLE 100 PERCENT와 같은 효과가 발생합니다. 이 옵션은 SAMPLE 옵션과 함께 사용할 수 없습니다.
  • SAMPLE number { PERCENT | ROWS }
    통계를 수집하려면 임의 샘플링을 사용하여 데이터의 특정 비율 또는 지정된 수의 행을 읽어야 함을 지정합니다. number에는 정수만 사용할 수 있습니다. PERCENT를 지정하면 number가 0부터 100까지 범위에 속해야 하고 ROWS를 지정할 경우에는 number가 0부터 n개까지의 총 행 수가 될 수 있습니다.

    SQL Server 2005 데이터베이스 엔진에서는 최소 개수의 값을 샘플링하여 유용한 통계를 얻을 수 있습니다. PERCENT, ROWS 또는 number 옵션을 사용한 결과 샘플링되는 행의 수가 너무 적을 경우 데이터베이스 엔진에서는 테이블이나 뷰에서 기존의 행의 수에 따라 자동으로 샘플링을 수정합니다. 약 1,000개 이상의 데이터 페이지가 샘플링됩니다. PERCENT, ROWS 또는 number 옵션이 유용한 샘플에 필요한 값보다 더 많은 값을 생성하는 경우 데이터베이스 엔진에서는 요청된 샘플 양에 맞추려고 노력합니다. 그러나 샘플은 전체 데이터 페이지를 검색하여 가져오므로 실제 샘플 크기가 지정한 양과 정확하게 일치하지 않을 수도 있습니다. 0 PERCENT 또는 ROWS를 지정하면 결과는 빈 통계 집합이 됩니다.

    SAMPLE은 FULLSCAN 옵션과 함께 사용할 수 없습니다. SAMPLE 또는 FULLSCAN을 지정하지 않으면 데이터베이스 엔진에서 자동 샘플이 계산됩니다.

  • NORECOMPUTE
    데이터베이스 엔진에서 통계를 자동으로 다시 계산하지 않도록 지정합니다. 이 옵션을 지정한 경우에는 데이터가 변경되어도 데이터베이스 엔진에서 이전에 작성된(이전) 통계를 계속 사용합니다. 통계는 데이터베이스 엔진에서 자동으로 업데이트 및 유지 관리되지 않습니다. 이로 인해 만족스럽지 못한 계획이 생성될 수 있습니다.

    ms188038.Caution(ko-kr,SQL.90).gif주의:
    이 옵션은 자격 있는 시스템 관리자에 의해 제한적으로 사용되는 것이 좋습니다.
  • STATS_STREAM **=**stats_stream
    이 구문은 내부적으로만 사용할 수 있으며 다른 용도로는 지원되지 않습니다. 이 구문은 언제든지 변경될 수 있습니다.

주의

테이블 소유자만이 해당 테이블에 관한 통계를 만들 수 있습니다. 테이블의 소유자는 테이블에 데이터가 있는지 여부에 관계없이 언제든지 통계 그룹(컬렉션)을 만들 수 있습니다.

AUTO_UPDATE_STATISTICS 데이터베이스 옵션을 ON(기본 설정)으로 설정하고 NORECOMPUTE 절을 지정하지 않으면 데이터베이스 엔진에서 수동으로 생성된 통계를 모두 자동으로 업데이트합니다.

인덱싱된 뷰에서 CREATE STATISTICS를 실행할 수 있습니다. 인덱싱된 뷰에 관한 통계는 뷰가 쿼리에서 직접 참조되고 해당 뷰에 대해 NOEXPAND 힌트가 지정되어 있는 경우에만 최적화 프로그램에 의해 사용됩니다. 그렇지 않은 경우에는 인덱싱된 뷰가 쿼리 계획으로 대체되기 전에 기본 테이블에서 통계가 파생됩니다. 이러한 대체는 Microsoft SQL Server 2005 Enterprise Edition과 Developer Edition에서만 지원됩니다.

사용 권한

테이블이나 뷰에 대한 ALTER 권한이 필요합니다.

1. CREATE STATISTICS에 SAMPLE number PERCENT 사용

다음 예에서는 ContactMail1 통계 그룹(컬렉션)을 만듭니다. 이 경우 AdventureWorks 데이터베이스의 Contact 테이블에 있는 ContactIDEmailAddress 열의 5%에 대해 임의 샘플링 통계가 계산됩니다.

USE AdventureWorks;
GO
CREATE STATISTICS ContactMail1
    ON Person.Contact (ContactID, EmailAddress)
    WITH SAMPLE 5 PERCENT;

2. CREATE STATISTICS에 FULLSCAN 및 NORECOMPUTE 사용

다음 예에서는 ContactMail2 통계 그룹(컬렉션)을 만듭니다. 이 경우 Contact 테이블의 ContactIDEmailAddress 열에 있는 모든 행에 대한 통계가 계산되며 통계의 자동 다시 계산 기능은 사용되지 않습니다.

CREATE STATISTICS NamePurchase
    ON AdventureWorks.Person.Contact (ContactID, EmailAddress)
    WITH FULLSCAN, NORECOMPUTE;

참고 항목

참조

ALTER DATABASE(Transact-SQL)
CREATE INDEX(Transact-SQL)
DBCC SHOW_STATISTICS(Transact-SQL)
DROP STATISTICS(Transact-SQL)
sys.stats(Transact-SQL)
sys.stats_columns(Transact-SQL)
sp_autostats(Transact-SQL)
sp_createstats(Transact-SQL)
UPDATE STATISTICS(Transact-SQL)
EVENTDATA(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기