통계 ( Transact SQL ) 만들 기 | Microsoft Docs 
 자세 한 내용 은 참고 통계 합니다 . To learn more , see Statistics . 
 만들 통계 의 이름 입니다 . Is the name of the statistics to create . 
 테이블 , 인덱싱 된 뷰 또는 외부 테이블 을 만들 통계 의 이름 이 입니다 . Is the name of the table , indexed view , or external table on which to create the statistics . 다른 데이터베이스 에서 통계 를 만들 려면 정규 화 된 테이블 이름 을 지정 합니다 . To create statistics on another database , specify a qualified table name . 
 열 [ , … n ] column [ , … n ] 
 하나 이상 의 열 을 통계 에 포함 합니다 . One or more columns to be included in the statistics . 우선 순위 에 따라 왼쪽 에서 오른쪽 으로 열 이 어야 합니다 . The columns should be in priority order from left to right . 첫 번 째 열 만 히스토그램 을 만드 는 데 사용 됩니다 . Only the first column is used for creating the histogram . 모든 열 은 밀도 호출 하 는 열 간 상관 관계 통계 에 사용 됩니다 . All columns are used for cross - column correlation statistics called densities . 
 다음 예외 사항 을 제외 하 고 인덱스 키 열 로 지정 할 수 있 는 모든 열 을 지정 할 수 있 습니다 . You can specify any column that can be specified as an index key column with the following exceptions : 
 Xml , 전체 텍스트 및 FILESTREAM 열 을 지정 할 수 없 습니다 . Xml , full - text , and FILESTREAM columns cannot be specified . 
 ARITHABORT 및 QUOTED _ IDENTIFIER 데이터베이스 설정 이 ON 으로 설정 된 경우 에 만 계산 열 을 지정 할 수 있 습니다 . Computed columns can be specified only if the ARITHABORT and QUOTED _ IDENTIFIER database settings are ON . 
 CLR 사용 자 정의 형식 열 은 이진 순서 정렬 이 지원 될 경우 에 만 지정 할 수 있 습니다 . CLR user - defined type columns can be specified if the type supports binary ordering . 사용 자 정의 형식 열 의 메 서드 호출 로 정의 된 계산 열 은 메서 드가 결정 적 메서 드로 표시 된 경우 에 지정 할 수 있 습니다 . Computed columns defined as method invocations of a user - defined type column can be specified if the methods are marked deterministic . 
 여기 서 < filter _ predicate > 통계 개체 를 만들 때 포함 할 행 하위 집합 을 선택 하 는 식 을 지정 합니다 . WHERE < filter _ predicate > Specifies an expression for selecting a subset of rows to include when creating the statistics object . 필터 조건 자 를 사용 하 여 만든 통계 를 필터링 된 통계 라고 합니다 . Statistics that are created with a filter predicate are called filtered statistics . 필터 조건 자 는 간단 한 비교 논리 를 사용 하 며 계산 된 열 , UDT 열 , 공간 데이터 형식 열 을 참조 할 수 없 습니다 또는 hierarchyID 데이터 형식 열 입니다 . The filter predicate uses simple comparison logic and cannot reference a computed column , a UDT column , a spatial data type column , or a hierarchyID data type column . 비교 연산자 에 는 NULL 리터럴 을 사용 한 비교 를 사용 할 수 없 습니다 . Comparisons using NULL literals are not allowed with the comparison operators . 대신 IS NULL 및 IS NOT NULL 연산자 를 사용 합니다 . Use the IS NULL and IS NOT NULL operators instead . 
 다음 은 Production . BillOfMaterials 테이블 에 대한 필터 조건 자 의 예 입니다 . Here are some examples of filter predicates for the Production . BillOfMaterials table : 
 필터 조건 자 에 대 한 자세 한 내용 은 참조 Create Filtered Indexes 합니다 . For more information about filter predicates , see Create Filtered Indexes . 
 모든 행 을 검색 하 여 통계 를 계산 합니다 . Compute statistics by scanning all rows . FULLSCAN 과 SAMPLE 100 PERCENT 의 결과 는 같 습니다 . FULLSCAN and SAMPLE 100 PERCENT have the same results . FULLSCAN 은 SAMPLE 옵션 과 함께 사용 할 수 없 습니다 . FULLSCAN cannot be used with the SAMPLE option . 
 생략 하 면 SQL Server 통계 를 만들 샘플링 을 사용 하 고 고품질 의 쿼리 계획 을 만드 는 데 필요 한 샘플 크기 를 결정 When omitted , SQL Server uses sampling to create the statistics , and determines the sample size that is required to create a high quality query plan 
 쿼리 최적화 프로그램 에서 통계 를 만들 때 사용 할 테이블 이나 인덱싱 된 뷰 에 있 는 행의 비율 이나 개수 를 대략 적 으로 지정 합니다 . Specifies the approximate percentage or number of rows in the table or indexed view for the query optimizer to use when it creates statistics . Percent 의 경우 번호 에서 100 사이 행 에 대 한 일 수 있 습니다 번호 총 행 수 를 0 에서 일 수 있 습니다 . For PERCENT , number can be from 0 through 100 and for ROWS , number can be from 0 to the total number of rows . 쿼리 최적화 프로그램 에서 샘플링 하 는 실제 행의 비율 이나 개수 는 지정 된 비율 이나 개수 와 일치 하 지 않 을 수 있 습니다 . The actual percentage or number of rows the query optimizer samples might not match the percentage or number specified . 예 를 들 어 , 쿼리 최적화 프로그램 에서 는 데이터 페이지 의 모든 행 을 검색 합니다 . For example , the query optimizer scans all rows on a data page . 
 SAMPLE 은 기본 샘플링 을 기반 으로 하 는 쿼리 계획 이 만족 스럽 지 못한 특별 한 경우 에 유용 합니다 . SAMPLE is useful for special cases in which the query plan , based on default sampling , is not optimal . 대부분 의 경우 쿼리 최적화 프로그램 은 기본 적 으로 고품질 의 쿼리 계획 을 만들 기 위해 필요 에 따라 샘플링 을 사용 하 고 통계 적 으로 중요 한 샘플 크기 를 결정 하 기 때문 에 SAMPLE 을 지정 할 필요 가 없 습니다 . In most situations , it is not necessary to specify SAMPLE because the query optimizer already uses sampling and determines the statistically significant sample size by default , as required to create high - quality query plans . 
 SAMPLE 은 FULLSCAN 옵션 과 함께 사용 할 수 없 습니다 . SAMPLE cannot be used with the FULLSCAN option . SAMPLE 과 FULLSCAN 을 둘 다 지정 하 지 않 으면 기본 적 으로 쿼리 최적화 프로그램 에서 샘플링 된 데이터 를 사용 하 고 샘플 크기 를 계산 합니다 . When neither SAMPLE nor FULLSCAN is specified , the query optimizer uses sampled data and computes the sample size by default . 
 0 PERCENT 또는 0 ROWS 로 지정 하 지 않 는 것 이 좋 습니다 . We recommend against specifying 0 PERCENT or 0 ROWS . 0 PERCENT 또는 0 ROWS 로 지정 하 면 통계 데이터 가 포함 되 지 않 은 빈 통계 개체 가 만들 어 집니다 . When 0 PERCENT or ROWS is specified , the statistics object is created but does not contain statistics data . 
 때 ON , 통계 샘플링 비율 을 명시 적 으로 지정 하 지 않 으면 후속 업데이트 에 대 한 만들 기 샘플링 백분율 을 그대로 유지 됩니다 . When ON , the statistics will retain the creation sampling percentage for subsequent updates that do not explicitly specify a sampling percentage . 때 OFF , 통계 샘플링 비율 샘플링 비율 을 명시 적 으로 지정 하 지 않 은 이후 의 업데이트 에서 기본 샘플링 을 다시 설정 될 됩니다 . When OFF , statistics sampling percentage will get reset to default sampling in subsequent updates that do not explicitly specify a sampling percentage . 기본 값 은 OFF 합니다 . The default is OFF . 
 에 적용 됩니다 : SQL Server 2016 SQL Server 2016 ( 부터 는 SQL Server 2016 SQL Server 2016 SP 1 CU 4 ) 를 통해 SQL Server 2017 SQL Server 2017 ( 부터 는 SQL Server 2017 SQL Server 2017 CU 1 ) . Applies to : SQL Server 2016 SQL Server 2016 ( starting with SQL Server 2016 SQL Server 2016 SP 1 CU 4 ) through SQL Server 2017 SQL Server 2017 ( starting with SQL Server 2017 SQL Server 2017 CU 1 ) . 
 에 대 한 자동 통계 업데이트 옵션 인 AUTO _ STATISTICS _ UPDATE 를 비활성 화 statistics _ name 합니다 . Disable the automatic statistics update option , AUTO _ STATISTICS _ UPDATE , for statistics _ name . 쿼리 최적화 프로그램 에 대 한 모든 진행 중 인 통계 업데이트 를 완료 하이 옵션 을 지정 하 는 경우 statistics _ name 이후 의 업데이트 를 비활성 화 하 고 있 습니다 . If this option is specified , the query optimizer will complete any in - progress statistics updates for statistics _ name and disable future updates . 
 통계 업데이트 를 다시 사용 하 려면 사용 하 여 통계 제거 DROP STATISTICS 다음 NORECOMPUTE 옵션 없이 CREATE STATISTICS 를 실행 합니다 . To re - enable statistics updates , remove the statistics with DROP STATISTICS and then run CREATE STATISTICS without the NORECOMPUTE option . 
 이 옵션 을 사용 하 면 최적 이 아닌 쿼리 계획 이 생성 될 수 있 습니다 . Using this option can produce suboptimal query plans . 이 옵션 은 자격 있 는 시스템 관리자 가 꼭 필요 한 경우 에 만 사용 하 는 것 이 좋 습니다 . We recommend using this option sparingly , and then only by a qualified system administrator . 
 AUTO _ STATISTICS _ UPDATE 옵션 에 대 한 자세 한 내용 은 참조 하 세요 . ALTER DATABASE SET 옵션 ( Transact SQL ) . For more information about the AUTO _ STATISTICS _ UPDATE option , see ALTER DATABASE SET Options ( Transact - SQL ) . 통계 업데이트 를 다시 활성 화 및 비활성 화 하 는 방법 에 대 한 자세 한 내용 은 참조 통계 합니다 . For more information about disabling and re - enabling statistics updates , see Statistics . 
 때 ON , 파티션 통계 별로 통계 가 작성 됩니다 . When ON , the statistics created are per partition statistics . 때 OFF , 통계 는 모든 파티션 에 대 한 결합 됩니다 . When OFF , stats are combined for all partitions . 기본 값 은 OFF 합니다 . The default is OFF . 
 파티션 별 통계 가 지원 되 지 않 을 경우 오류 가 생성 됩니다 . If per partition statistics are not supported an error is generated . 다음 통계 유형 에 대해서 는 증분 통계 가 지원 되 지 않 습니다 . Incremental stats are not supported for following statistics types : 
 적용 대상 : SQL ServerSQL Server ( 부터 는 SQL Server 2017 SQL Server 2017 CU 3 ) . Applies to : SQL ServerSQL Server ( Starting with SQL Server 2017 SQL Server 2017 CU 3 ) . 
 재정 의 x degree of 통계 작업 의 기간 에 대 한 구성 옵션 입니다 . Overrides the max degree of parallelism configuration option for the duration of the statistic operation . 자세 한 내용 은 max degree of parallelism 서버 구성 옵션 구성 을 참조 하 세요 . For more information , see Configure the max degree of parallelism Server Configuration Option . MAXDOP 를 사용 하 여 병렬 계획 실행 에 사용 되 는 프로세서 수 를 제한 할 수 있 습니다 . Use MAXDOP to limit the number of processors used in a parallel plan execution . 최대 값 은 64 개 입니다 . The maximum is 64 processors . 
 max _ degree _ of _ parallelism 될 수 있 습니다 . max _ degree _ of _ parallelism can be : 
 지정 된 된 수 이하 로 현재 시스템 작업 에 따라 병렬 통계 작업 에 사용 되 는 프로세서 의 최대 수 를 제한 합니다 . Restricts the maximum number of processors used in a parallel statistic operation to the specified number or fewer based on the current system workload . 
 < update _ stats _ stream _ option > 정보 를 제공 하 기 위해서 만 확인 됩니다 . Identified for informational purposes only . 지원 되 지 않 습니다 . Not supported . 향후 호환 성 은 보장 되 지 않 습니다 . Future compatibility is not guaranteed . < update _ stats _ stream _ option > 정보 를 제공 하 기 위해서 만 확인 됩니다 . Identified for informational purposes only . 지원 되 지 않 습니다 . Not supported . 향후 호환 성 은 보장 되 지 않 습니다 . Future compatibility is not guaranteed . 
 이러 한 사용 권한 중 하나 가 필요 합니다 . Requires one of these permissions : 
 사용 자 는 소유자 User is the table owner 
 멤버 자격 이 db _ ddladmin 고정 된 데이터베이스 역할 Membership in the db _ ddladmin fixed database role 
 SQL ServerSQL Server 통계 를 작성 하 기 전 에 샘플링 된 한 행 을 정렬 하 려면 tempdb 를 사용 할 수 있 습니다 . can use tempdb to sort the sampled rows before building statistics . 
 외부 테이블 에 대 한 통계 Statistics for external tables 
 외부 테이블 통계 를 만들 때 SQL ServerSQL Server 임시 에 외부 테이블 을 가져오 는 SQL ServerSQL Server 테이블 을 선택 한 다음 통계 를 작성 합니다 . When creating external table statistics , SQL ServerSQL Server imports the external table into a temporary SQL ServerSQL Server table , and then creates the statistics . 샘플 통계 에 대 한 샘플링 된 한 행 만 가져옵니다 . For samples statistics , only the sampled rows are imported . 큰 외부 테이블 을 설정 한 경우 전체 검색 옵션 대신 기본 샘플링 을 사용 하 는 것 이 빠르 므로 됩니다 . If you have a large external table , it will be much faster to use the default sampling instead of the full scan option . 
 필터링 된 조건 사용 하 여 통계 Statistics with a filtered condition 
 필터링 된 통계 는 잘 정의 된 데이터 의 하위 집합 에서 선택 하 는 쿼리 에 대한 쿼리 성능 을 높일 수 있 습니다 . Filtered statistics can improve query performance for queries that select from well - defined subsets of data . WHERE 절 의 필터 조건 자 를 사용 하 여 통계 에 포함 되 는 데이터 의 하위 집합 을 선택 합니다 . Filtered statistics use a filter predicate in the WHERE clause to select the subset of data that is included in the statistics . 
 CREATE STATISTICS 를 사용 하 는 경우 When to Use CREATE STATISTICS 
 CREATE STATISTICS 를 사용 하 는 경우 에 대 한 자세 한 내용 은 참조 통계 합니다 . For more information about when to use CREATE STATISTICS , see Statistics . 
 필터링 된 통계 의 종속 성 참조 Referencing Dependencies for Filtered Statistics 
 sys . sql _ expression _ dependencies 카탈로그 뷰 종속 성 참조 로 필터링 된 통계 조건 자 의 각 열 을 추적 합니다 . The sys . sql _ expression _ dependencies catalog view tracks each column in the filtered statistics predicate as a referencing dependency . 필터링 된 통계 조건 자 에서 정의 된 테이블 열 은 삭제 , 이름 바꾸 기 또는 정의 변경 을 수행 할 수 없 으므로 필터링 된 통계 를 만들 기 전 에 테이블 열 에서 수행 하 는 작업 을 고려 하 세요 . Consider the operations that you perform on table columns before creating filtered statistics because you cannot drop , rename , or alter the definition of a table column that is defined in a filtered statistics predicate . 
 외부 테이블 에서 통계 를 업데이트 할 수 없 습니다 . Updating statistics is not supported on external tables . 외부 테이블 에 대 한 통계 를 업데이트 하 려면 삭제 하 고 통계 를 다시 만듭니다 . To update statistics on an external table , drop and re - create the statistics . 
 개체 당 최대 64 개 열 을 나열 할 수 있 습니다 . You can list up to 64 columns per statistics object . 
 MAXDOP 옵션 STATS _ STREAM , 행 개수 및 PAGECOUNT 옵션 와 호환 되 지 않 습니다 . The MAXDOP option is not compatible with STATS _ STREAM , ROWCOUNT and PAGECOUNT options . 
 예 제 는 AdventureWorks 데이터베이스 를 사용 합니다 . Examples use the AdventureWorks database . 
 1 . A . CREATE STATISTICS 에 SAMPLE number PERCENT 사용 Using CREATE STATISTICS with SAMPLE number PERCENT 
 다음 예 에서 는 AdventureWorks 2012 AdventureWorks 2012 데이터베이스 의 ContactMail 1 테이블 에서 BusinessEntityID 및 EmailPromotion 열 에 대해 5 % 무작위 샘플링 을 사용 하 여 Contact 통계 를 만듭니다 . The following example creates the ContactMail 1 statistics , using a random sample of 5 percent of the BusinessEntityID and EmailPromotion columns of the Contact table of the AdventureWorks 2012 AdventureWorks 2012 database . 
 2 . B . CREATE STATISTICS 에 FULLSCAN 및 NORECOMPUTE 사용 Using CREATE STATISTICS with FULLSCAN and NORECOMPUTE 
 다음 예 에서 는 ContactMail 2 테이블 의 BusinessEntityID 및 EmailPromotion 열 에서 모든 행 에 대한 Contact 통계 를 만듭니다 . 통계 의 자동 다시 계산 기능 은 사용 하 지 않 습니다 . The following example creates the ContactMail 2 statistics for all rows in the BusinessEntityID and EmailPromotion columns of the Contact table and disables automatic recomputing of statistics . 
 3 . C . CREATE STATISTICS 를 사용 하 여 필터링 된 통계 만들 기 Using CREATE STATISTICS to create filtered statistics 
 다음 예 에서 는 필터링 된 통계 ContactPromotion 1 을 만듭니다 . The following example creates the filtered statistics ContactPromotion 1 . 데이터베이스 엔진 Database Engine 은 데이터 의 50 % 를 샘플링 한 다음 EmailPromotion 이 2 인 행 을 선택 합니다 . The 데이터베이스 엔진 Database Engine samples 50 percent of the data and then selects the rows with EmailPromotion equal to 2 . 
 4 . D . 외부 테이블 에서 통계 를 작성 합니다 . Create statistics on an external table 
 외부 테이블 , 열 목록 외 에 통계 를 만들 때 판단 해야 하 는 유일 한 결정 행 을 샘플링 하 여 또는 모든 행 을 검사 하 여 통계 를 만들 것 인지 여부 입니다 . The only decision you need to make when you create statistics on an external table , besides providing the list of columns , is whether to create the statistics by sampling the rows or by scanning all of the rows . 
 이후 SQL ServerSQL Server 전체 검색 옵션 통계 를 만들 려면 를 임시 테이블 에 외부 테이블 에서 훨씬 더 오래 걸립니다 . Since SQL ServerSQL Server imports data from the external table into a temporary table to create statistics , the full scan option will take much longer . 큰 테이블 에 대 한 기본 샘플링 방법 으로 충분 합니다 . For a large table , the default sampling method is usually sufficient . 
 5 . E . CREATE STATISTICS 에 FULLSCAN 및 PERSIST _ SAMPLE _ PERCENT 사용 Using CREATE STATISTICS with FULLSCAN and PERSIST _ SAMPLE _ PERCENT 
 다음 예제 에서 는 ContactMail 2 의 모든 행 에 대 한 통계 는 BusinessEntityID 및 EmailPromotion 의 열 은 Contact 테이블 을 명시 적 으로 되 어 있 어야 하 지 않 는 한 모든 후속 업데이트 는 샘플링 을 지정 할 100 % 샘플링 비율 을 설정 합니다 . 백분율 입니다 . The following example creates the ContactMail 2 statistics for all rows in the BusinessEntityID and EmailPromotion columns of the Contact table and sets a 100 percent sampling percentage for all subsequent updates that do not explicitely specify a sampling percentage . 
 AdventureWorksDW 데이터베이스 를 사용 하 는 예제 입니다 . Examples using AdventureWorksDW database . 
 6 . F . 두 열 에 통계 를 작성 합니다 . Create statistics on two columns 
 다음 예제 에서 는 CustomerStats 1 기준 으로 통계 는 CustomerKey 및 EmailAddress 의 열 은 DimCustomer 테이블 입니다 . The following example creates the CustomerStats 1 statistics , based on the CustomerKey and EmailAddress columns of the DimCustomer table . 통계 에 있 는 행의 통계 적 으로 중요 한 샘플링 을 기반 으로 생 성 된 Customer 테이블 입니다 . The statistics are created based on a statistically significant sampling of the rows in the Customer table . 
 7 . G . 전체 검색 을 사용 하 여 통계 를 만들 어 Create statistics by using a full scan 
 다음 예제 에서 는 CustomerStatsFullScan 에 있 는 행 의 모든 검색 기준 으로 통계 는 DimCustomer 테이블 입니다 . The following example creates the CustomerStatsFullScan statistics , based on scanning all of the rows in the DimCustomer table . 
 8 . H . 샘플 비율 을 지정 하 여 통계 를 만들 어 Create statistics by specifying the sample percentage 
 다음 예제 에서 는 CustomerStatsSampleScan 에 있 는 행의 50 % 검색 기준 으로 통계 는 DimCustomer 테이블 입니다 . The following example creates the CustomerStatsSampleScan statistics , based on scanning 50 percent of the rows in the DimCustomer table . 
 sys . stats _ columns ( Transact SQL ) sys . stats _ columns ( Transact - SQL )