Write for Us
Here's how this code works:
@name = N'PlanGuide1',
The above line of code is used to give the Plan Guide it own unique name.
@stmt = N'SELECT COUNT(*) AS Total FROM Sales.SalesOrderHeader h, Sales.SalesOrderDetail d WHERE h.SalesOrderID = d.SalesOrderID and h.OrderDate BETWEEN "1/1/2000" AND "1/1/2005" ',
This line of code is the code that the query optimizer is supposed to match. So whenever this code is sent from an application to the query optimizer, it tries to match the code. When it sees code that matches, like that specified above, then the query optimizer looks up the code in the Plan Guide lookup table, finds the correct Plan Guide, then applies the Plan Guide.
@type = N'SQL',
The above line of code specifies which one of three types of Plan Guide it is. In this case, it is a SQL Plan Guide.
@module_or_batch = NULL,
This line of code is used to specify the name of the object, assuming that this Plan Guide is an Object Plan Guide, which is not the case in this example.
@params = NULL,
The above line of code is only used if this is a Template Plan Guide, which it is not.
@hints = N'OPTION (MERGE JOIN)'
This line of code specifies the hint(s) to add to the query before it is compiled and executed.
The sp_control_plan_guide system stored procedure is used to drop, enable, or disable Plan Guides, using the following syntax:
sp_control_plan_guide [ @operation = ] N'<control_option>' [ , [ @name = ] N'plan_guide_name' ]
The <control_option> can be:
Below are some examples of how you might use this stored procedure:
sp_control_plan_guide N'DROP', N'PlanGuide1' sp_control_plan_guide N'DISABLE', N'PlanGuide1' sp_control_plan_guide N'ENABLE', N'PlanGuide1'
Note: If you try to drop or modify a stored procedure, function, or DML trigger that is referenced by a Plan Guide, it causes an error. The Plan Guide must first be dropped.
Once you create a Plan Guide, you can use a catalog view to see what Plan Guides have been created in a particular database. For example, the following code produces these results:
SELECT * FROM sys.plan_guides
Note: Because of the width of the above results, it has been broken into two sections for easier viewing.
While Plan Guides can be used for applying virtually any hint to code, they are most often used in the following cases:
If you decide that you want to try using Plan Guides on your SQL Server 2005 servers, keep the following best practices in mind:
Like many other performance tuning hints, Plan Guides are designed to resolve a very specific type of problem. While you may not use them much, if at all, it is nice to know they are available when you do need this functionality.