다음을 통해 공유


새 계획 지침 만들기

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

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

계획 지침은 고정 쿼리 계획 및/또는 쿼리 힌트를 쿼리에 적용합니다.

제한 사항

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

  • 동일한 쿼리 및 일괄 처리 또는 모듈에 대해 둘 이상의 개체 또는 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이 아니어야 합니다.

    • sp_executesql을 사용하여 Transact-SQL 문이 제출되고 매개 변수에 대한 값이 지정된 경우 또는 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)를 참조하세요.