비클러스터형 인덱스 만들기Create Nonclustered Indexes

이 항목은 다음에 적용됩니다. 예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 Server 2017SQL Server 2017 에서 SQL Server Management StudioSQL Server Management Studio 또는 Transact-SQLTransact-SQL을 사용하여 비클러스터형 인덱스를 만들 수 있습니다.You can create nonclustered indexes in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. 비클러스터형 인덱스는 하나 이상의 선택된 열을 다시 정렬하는 테이블에 저장된 데이터와 구별되는 인덱스 구조입니다.A nonclustered index is an index structure separate from the data stored in a table that reorders one or more selected columns. 비클러스터형 인덱스는 기본 테이블을 검색할 때보다 빠르게 데이터를 찾는 데 도움이 될 수 있습니다. 비클러스터형 인덱스의 데이터가 쿼리에 대한 완전한 대답이 되는 경우도 있지만, 비클러스터형 인덱스에서 데이터베이스 엔진Database Engine 을 기본 테이블의 행으로 연결할 수도 있습니다.Nonclustered indexes can often help you find data more quickly than searching the underlying table; queries can sometimes be answered entirely by the data in the nonclustered index, or the nonclustered index can point the 데이터베이스 엔진Database Engine to the rows in the underlying table. 일반적으로 비클러스터형 인덱스는 클러스터형 인덱스를 적용할 수 없고 자주 사용되는 쿼리의 성능을 개선하거나, 클러스터형 인덱스(힙이라고 함) 없이 테이블에서 행을 찾기 위해 만듭니다.Generally, nonclustered indexes are created to improve the performance of frequently used queries not covered by the clustered index or to locate rows in a table without a clustered index (called a heap). 테이블 또는 인덱싱된 뷰에 비클러스터형 인덱스를 여러 개 만들 수 있습니다.You can create multiple nonclustered indexes on a table or indexed view.

항목 내용In This Topic

시작하기 전에 Before You Begin

일반적인 구현 방법 Typical Implementations

비클러스터형 인덱스는 다음 방법으로 구현합니다.Nonclustered indexes are implemented in the following ways:

  • UNIQUE 제약 조건UNIQUE constraints

    UNIQUE 제약 조건을 만들면 고유 비클러스터형 인덱스가 생성되어 기본적으로 UNIQUE 제약 조건을 적용합니다.When you create a UNIQUE constraint, a unique nonclustered index is created to enforce a UNIQUE constraint by default. 테이블에 클러스터형 인덱스가 없는 경우 고유 클러스터형 인덱스를 지정할 수 있습니다.You can specify a unique clustered index if a clustered index on the table does not already exist. 자세한 내용은 Unique Constraints and Check Constraints을 참조하세요.For more information, see Unique Constraints and Check Constraints.

  • 제약 조건의 영향을 받지 않는 인덱스Index independent of a constraint

    기본적으로 클러스터링 옵션을 지정하지 않으면 비클러스터형 인덱스가 생성됩니다.By default, a nonclustered index is created if clustered is not specified. 각 테이블에서 만들 수 있는 최대 비클러스터형 인덱스 수는 999개입니다.The maximum number of nonclustered indexes that can be created per table is 999. 여기에는 PRIMARY KEY 또는 UNIQUE 제약 조건을 사용하여 생성된 인덱스가 포함되지만 XML 인덱스는 포함되지 않습니다.This includes any indexes created by PRIMARY KEY or UNIQUE constraints, but does not include XML indexes.

  • 인덱싱된 뷰의 비클러스터형 인덱스Nonclustered index on an indexed view

    뷰에 클러스터형 고유 인덱스를 만든 후 비클러스터형 인덱스를 만들 수 있습니다.After a unique clustered index has been created on a view, nonclustered indexes can be created. 자세한 내용은 인덱싱된 뷰 만들기를 참조하세요.For more information, see Create Indexed Views.

보안 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 a nonclustered index by using the Table Designer

  1. 개체 탐색기에서 비클러스터형 인덱스를 만들 테이블이 포함된 데이터베이스를 확장합니다.In Object Explorer, expand the database that contains the table on which you want to create a nonclustered index.

  2. 테이블 폴더를 확장합니다.Expand the Tables folder.

  3. 비클러스터형 인덱스를 만들 테이블을 마우스 오른쪽 단추로 클릭하고 디자인을 선택합니다.Right-click the table on which you want to create a nonclustered index and select Design.

  4. 테이블 디자이너 메뉴에서 인덱스/키를 클릭합니다.On the Table Designer menu, click Indexes/Keys.

  5. 인덱스/키 대화 상자에서 추가를 클릭합니다.In the Indexes/Keys dialog box, click Add.

  6. 선택한 기본/고유 키 또는 인덱스 입력란에서 새 인덱스를 선택합니다.Select the new index in the Selected Primary/Unique Key or Index text box.

  7. 표에서 CLUSTERED로 만들기를 선택하고 속성 오른쪽에 있는 드롭다운 목록에서 아니요 를 선택합니다.In the grid, select Create as Clustered, and choose No from the drop-down list to the right of the property.

  8. 닫기를 클릭합니다.Click Close.

  9. 파일 메뉴에서 table name 저장을 클릭합니다.On the File menu, click Savetable_name.

개체 탐색기를 사용하여 비클러스터형 인덱스를 만들려면To create a nonclustered index by using Object Explorer

  1. 개체 탐색기에서 비클러스터형 인덱스를 만들 테이블이 포함된 데이터베이스를 확장합니다.In Object Explorer, expand the database that contains the table on which you want to create a nonclustered index.

  2. 테이블 폴더를 확장합니다.Expand the Tables folder.

  3. 비클러스터형 인덱스를 만들 테이블을 확장합니다.Expand the table on which you want to create a nonclustered index.

  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 Index key columns, 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 nonclustered index.

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

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

Transact-SQL 사용 Using Transact-SQL

테이블에 비클러스터형 인덱스를 만들려면To create a nonclustered index on a table

  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  
    -- Find an existing index named IX_ProductVendor_VendorID and delete it if found.   
    IF EXISTS (SELECT name FROM sys.indexes  
                WHERE name = N'IX_ProductVendor_VendorID')   
        DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor;   
    GO  
    -- Create a nonclustered index called IX_ProductVendor_VendorID   
    -- on the Purchasing.ProductVendor table using the BusinessEntityID column.   
    CREATE NONCLUSTERED INDEX IX_ProductVendor_VendorID   
        ON Purchasing.ProductVendor (BusinessEntityID);   
    GO  
    

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