새 계획 지침 만들기

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

계획 지침은 쿼리 힌트 또는 고정 쿼리 계획을 연결하여 쿼리 최적화에 영향을 줍니다. 계획 가이드에서는 최적화하려는 문과 사용하려는 쿼리 힌트가 포함된 OPTION 절을 지정합니다. 또는 쿼리를 최적화하는 데 사용할 특정 쿼리 계획입니다. 쿼리가 실행되면 쿼리 최적화 프로그램은 Transact-SQL 문을 계획 지침에 일치시키고 런타임에 OPTION 절을 쿼리에 연결하거나 지정된 쿼리 계획을 사용합니다.

계획 가이드는 고정 쿼리 계획 및/또는 쿼리 힌트를 쿼리에 적용합니다.

제한 사항

  • sp_create_plan_guide 인수는 표시된 순서대로 제공해야 합니다. sp_create_plan_guide 매개 변수에 대한 값을 제공하는 경우 모든 매개 변수 이름을 명시적으로 지정하거나 전혀 지정하지 않아야 합니다. 예를 들어 @name =가 지정된 경우 @stmt = , @type =등도 지정해야 합니다. 마찬가지로 @name = 가 생략되고 매개 변수 값만 제공되면 나머지 매개 변수 이름도 생략하고 해당 값만 제공되어야 합니다. 인수 이름은 구문을 이해하는 데 도움이 되는 설명적인 용도로만 사용됩니다. SQL Server는 지정된 매개 변수 이름이 이름이 사용되는 위치에 있는 매개 변수의 이름과 일치하는지 확인하지 않습니다.

  • 동일한 쿼리 및 일괄 처리 또는 모듈에 대해 둘 이상의 OBJECT 또는 SQL 계획 가이드를 만들 수 있습니다. 그러나 언제든지 하나의 계획 가이드만 사용하도록 설정할 수 있습니다.

  • WITH ENCRYPTION 절을 지정하거나 임시인 저장 프로시저, 함수 또는 DML 트리거를 참조하는 값에 대해 @module_or_batch OBJECT 형식의 계획 지침을 만들 수 없습니다.

  • 계획 지침에서 참조하는 함수, 저장 프로시저 또는 DML 트리거를 삭제하거나 수정하려고 하면 오류가 발생합니다. 계획 가이드에서 참조하는 트리거가 정의된 테이블을 삭제하려고 하면 오류가 발생합니다.

사용 권한

OBJECT 유형의 계획 지침을 만들려면 참조된 개체에 ALTER 권한이 있어야 합니다. SQL 또는 TEMPLATE 형식의 계획 지침을 만들려면 현재 데이터베이스에 대한 ALTER 권한이 필요합니다.

SSMS를 사용하여 계획 가이드 만들기

  1. 더하기 기호를 클릭하여 계획 지침을 만들 데이터베이스를 확장한 다음 더하기 기호를 클릭하여 프로그래밍 기능 폴더를 확장합니다.

  2. 계획 지침 폴더를 마우스 오른쪽 단추로 클릭하고 새 계획 지침...을 선택합니다.select_plan_guide

  3. 새 계획 지침 대화 상자의 이름 입력란에 계획 지침 이름을 입력합니다.

  4. 상자에 계획 지침을 적용할 Transact-SQL 문을 입력합니다.

  5. 범위 유형 목록에서 Transact-SQL 문이 표시되는 엔터티 유형을 선택합니다. Transact-SQL 문을 계획 가이드와 일치시키는 컨텍스트를 지정합니다. 가능한 값은 OBJECT, SQLTEMPLATE입니다.

  6. 범위 일괄 처리 상자에 Transact-SQL 문이 표시되는 일괄 처리 텍스트를 입력합니다. 일괄 처리 텍스트는 데이터베이스 문을 포함할 USE수 없습니다. 범위 일괄 처리 상자는 SQL이 범위 유형으로 선택된 경우에만 사용할 수 있습니다. SQL이 범위 유형일 때 범위 일괄 처리 상자에 아무 것도 입력하지 않으면 일괄 처리 텍스트의 값이 문 상자에 있는 값과 동일한 값으로 설정됩니다.

  7. 범위 스키마 이름 목록에서 개체가 포함된 스키마의 이름을 입력합니다. 범위 스키마 이름 상자는 개체가 범위 유형으로 선택된 경우에만 사용할 수 있습니다.

  8. 범위 개체 이름 상자에 Transact-SQL 저장 프로시저, 사용자 정의 스칼라 함수, 다중 상태 테이블 반환 함수 또는 Transact-SQL 문이 나타나는 DML 트리거의 이름을 입력합니다. 범위 개체 이름 상자는 범위 유형으로 개체를 선택한 경우에만 사용할 수 있습니다.

  9. 매개 변수 상자에 Transact-SQL 문에 포함된 모든 매개 변수의 매개 변수 이름 및 데이터 형식을 입력합니다.

    매개 변수는 다음 중 하나에 해당하는 경우에만 적용됩니다.

    • 범위 유형이 SQL 또는 TEMPLATE입니다. TEMPLATE인 경우 매개 변수는 NULL이 아니어야 합니다.

    • Transact-SQL 문은 sp_executesql 사용하여 제출되고 매개 변수 값이 지정되거나 SQL Server에서 매개 변수를 지정한 후 내부적으로 문을 제출합니다.

  10. 힌트 상자에 Transact-SQL 문에 적용할 쿼리 힌트 또는 쿼리 계획을 입력합니다. 하나 이상의 쿼리 힌트를 지정하려면 유효한 OPTION 절을 입력합니다.

  11. 확인을 클릭합니다.

plan_guide

T-SQL을 사용하여 계획 가이드 만들기

  1. 개체 탐색기에서 데이터베이스 엔진인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.

    -- creates a plan guide named Guide1 based on a SQL statement  
    EXEC sp_create_plan_guide   
        @name = N'Guide1',   
        @stmt = N'SELECT TOP 1 *   
                  FROM Sales.SalesOrderHeader   
                  ORDER BY OrderDate DESC',   
        @type = N'SQL',  
        @module_or_batch = NULL,   
        @params = NULL,   
        @hints = N'OPTION (MAXDOP 1)';  
    
    

자세한 내용은 sp_create_plan_guide(Transact-SQL)를 참조 하세요.