포괄 열을 사용하여 인덱스 만들기Create Indexes with Included Columns

이 항목은 다음에 적용됩니다. 예SQL Server(2016부터)예Azure SQL Database아니요Azure SQL Data Warehouse아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

이 항목에서는 SQL ServerSQL Server 또는 SQL Server Management StudioSQL Server Management Studio 을 사용하여 Transact-SQLTransact-SQL에서 비클러스터형 인덱스의 기능을 확장하도록 포괄 열 또는 키가 아닌 열을 추가하는 방법에 대해 설명합니다.This topic describes how to add included (or nonkey) columns to extend the functionality of nonclustered indexes in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. 키가 아닌 열을 포함하여 여러 쿼리를 처리하는 비클러스터형 인덱스를 만들 수 있습니다.By including nonkey columns, you can create nonclustered indexes that cover more queries. 이는 키가 아닌 열에 다음과 같은 장점이 있기 때문입니다.This is because the nonkey columns have the following benefits:

  • 키가 아닌 열은 인덱스 키 열로 사용할 수 없는 데이터 형식입니다.They can be data types not allowed as index key columns.

  • 인덱스 키 열의 수 또는 인덱스 키 크기를 계산할 때 데이터베이스 엔진Database Engine 은 키가 아닌 열을 고려하지 않습니다.They are not considered by the 데이터베이스 엔진Database Engine when calculating the number of index key columns or index key size.

    쿼리의 모든 열이 키 열 또는 키가 아닌 열로 인덱스에 포함되면 키가 아닌 열이 있는 인덱스는 쿼리 성능을 상당히 향상시킬 수 있습니다.An index with nonkey columns can significantly improve query performance when all columns in the query are included in the index either as key or nonkey columns. 성능이 향상되는 이유는 쿼리 최적화 프로그램이 테이블 또는 클러스터형 인덱스 데이터에 액세스하지 않고 인덱스 내에서 모든 열 값을 찾을 수 있으므로 디스크 I/O 작업을 줄어들기 때문입니다.Performance gains are achieved because the query optimizer can locate all the column values within the index; table or clustered index data is not accessed resulting in fewer disk I/O operations.

참고

인덱스에 쿼리가 참조하는 모든 열이 들어 있으면 일반적으로 이 인덱스는 쿼리를 포함한다고 합니다.When an index contains all the columns referenced by a query it is typically referred to as covering the query.

항목 내용In This Topic

시작하기 전에 Before You Begin

디자인 권장 구성 Design Recommendations

  • 검색 및 조회에 사용된 열만 키 열이 되도록 인덱스 키 크기가 큰 비클러스터형 인덱스를 다시 디자인합니다.Redesign nonclustered indexes with a large index key size so that only columns used for searching and lookups are key columns. 쿼리를 포함한 다른 모든 열을 키가 아닌 열로 만듭니다.Make all other columns that cover the query into nonkey columns. 이 방법을 통해 쿼리를 포함하는 데 필요한 모든 열을 가지게 되지만 인덱스 키 자체는 작으며 효과적입니다.In this way, you will have all columns needed to cover the query, but the index key itself is small and efficient.

  • 비클러스터형 인덱스에 키가 아닌 열을 포함하여 현재 인덱스 크기 제한인 최대 32개의 키 열 및 최대 1,700바이트( SQL Server 2016SQL Server 2016 이전에는 16개의 키 열 및 900바이트)의 인덱스 키 크기를 초과하지 않도록 할 수 있습니다.Include nonkey columns in a nonclustered index to avoid exceeding the current index size limitations of a maximum of 32 key columns and a maximum index key size of 1,700 bytes (16 key columns and 900 bytes prior to SQL Server 2016SQL Server 2016). 인덱스 키 열의 수 또는 인덱스 키 크기를 계산할 때 데이터베이스 엔진Database Engine 은 키가 아닌 열은 계산하지 않습니다.The 데이터베이스 엔진Database Engine does not consider nonkey columns when calculating the number of index key columns or index key size.

제한 사항 Limitations and Restrictions

  • 키가 아닌 열은 비클러스터형 인덱스에 대해서만 정의할 수 있습니다.Nonkey columns can only be defined on nonclustered indexes.

  • text, ntextimage 를 제외한 모든 데이터 형식을 키가 아닌 열로 사용할 수 있습니다.All data types except text, ntext, and image can be used as nonkey columns.

  • 결정적이면서 정확하거나 정확하지 않은 계산 열은 키가 아닌 열이 될 수 있습니다.Computed columns that are deterministic and either precise or imprecise can be nonkey columns. 자세한 내용은 Indexes on Computed Columns을 참조하세요.For more information, see Indexes on Computed Columns.

  • image, ntexttext 데이터 형식에서 파생된 계산 열은 계산 열 데이터 형식이 키가 아닌 인덱스 열로 허용되는 한 키가 아닌 열이 될 수 있습니다.Computed columns derived from image, ntext, and text data types can be nonkey columns as long as the computed column data type is allowed as a nonkey index column.

  • 테이블의 인덱스를 먼저 삭제하지 않으면 키가 아닌 열을 테이블에서 삭제할 수 없습니다.Nonkey columns cannot be dropped from a table unless that table’s index is dropped first.

  • 다음 경우를 제외하고 키가 아닌 열은 변경할 수 없습니다.Nonkey columns cannot be changed, except to do the following:

    • 열의 Null 허용 여부를 NOT NULL에서 NULL로 변경합니다.Change the nullability of the column from NOT NULL to NULL.

    • varchar, nvarchar또는 varbinary 열의 길이를 늘립니다.Increase the length of varchar, nvarchar, or varbinary columns.

보안 Security

사용 권한 Permissions

테이블이나 뷰에 대한 ALTER 권한이 필요합니다.Requires ALTER permission on the table or view. 사용자는 sysadmin 고정 서버 역할의 멤버 또는 db_ddladmindb_owner 고정 데이터베이스 역할의 멤버여야 합니다.User must be a member of the sysadmin fixed server role or the db_ddladmin and db_owner fixed database roles.

SQL Server Management Studio 사용 Using SQL Server Management Studio

키가 아닌 열이 있는 인덱스를 만들려면To create an index with nonkey columns

  1. 개체 탐색기에서 더하기 기호를 클릭하여 키가 아닌 열이 있는 인덱스를 만들 테이블이 포함된 데이터베이스를 확장합니다.In Object Explorer, click the plus sign to expand the database that contains the table on which you want to create an index with nonkey columns.

  2. 더하기 기호를 클릭하여 테이블 폴더를 확장합니다.Click the plus sign to expand the Tables folder.

  3. 더하기 기호를 클릭하여 키가 아닌 열이 있는 인덱스를 만들 테이블을 확장합니다.Click the plus sign to expand the table on which you want to create an index with nonkey columns.

  4. 인덱스 폴더를 마우스 오른쪽 단추로 클릭하고 새 인덱스를 가리킨 다음 비클러스터형 인덱스...를 선택합니다.Right-click the Indexes folder, point to New Index, and select Non-Clustered Index….

  5. 새 인덱스 대화 상자의 일반 페이지에서 인덱스 이름 상자에 새 인덱스의 이름을 입력합니다.In the New Index dialog box, on the General page, enter the name of the new index in the Index name box.

  6. 인덱스 키 열 탭 아래에서 추가...를 클릭합니다.Under the Index key columns tab, click Add….

  7. table_name에서 열 선택 대화 상자에서 인덱스에 추가할 테이블 열의 확인란을 선택합니다.In the Select Columns fromtable_name dialog box, select the check box or check boxes of the table column or columns to be added to the index.

  8. 확인을 클릭합니다.Click OK.

  9. 포괄 열 탭 아래에서 추가...를 클릭합니다.Under the Included columns tab, click Add….

  10. table_name에서 열 선택 대화 상자에서 키가 아닌 열로 인덱스에 추가할 테이블 열의 확인란을 선택합니다.In the Select Columns fromtable_name dialog box, select the check box or check boxes of the table column or columns to be added to the index as nonkey columns.

  11. 확인을 클릭합니다.Click OK.

  12. 새 인덱스 대화 상자에서 확인을 클릭합니다.In the New Index dialog box, click OK.

Transact-SQL 사용 Using Transact-SQL

키가 아닌 열이 있는 인덱스를 만들려면To create an index with nonkey columns

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;  
    GO  
    -- Creates a nonclustered index on the Person.Address table with four included (nonkey) columns.   
    -- index key column is PostalCode and the nonkey columns are  
    -- AddressLine1, AddressLine2, City, and StateProvinceID.  
    CREATE NONCLUSTERED INDEX IX_Address_PostalCode  
    ON Person.Address (PostalCode)  
    INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID);  
    GO  
    

    자세한 내용은 CREATE INDEX(Transact-SQL)를 참조하세요.For more information, see CREATE INDEX (Transact-SQL).