/
Chapter_15.txt
104 lines (79 loc) · 2.21 KB
/
Chapter_15.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
-----------------------------------------------------------------------
-- Source Code: SQL Server 2008 Transact-SQL Recipes, Joseph Sack
-----------------------------------------------------------------------
-- Do not execute the following code in a single batch. These samples
-- are provided in order to follow along with specific recipes.
-----------------------------------------------------------------------
-- Forcing a HASH Join
-- (More on SHOWPLAN_XML in Chapter 28)
SET SHOWPLAN_XML ON
GO
SELECT p.Name,
r.ReviewerName,
r.Rating
FROM Production.Product p
INNER JOIN Production.ProductReview r ON
r.ProductID = p.ProductID
GO
SET SHOWPLAN_XML OFF
GO
SET SHOWPLAN_XML ON
GO
SELECT p.Name,
r.ReviewerName,
r.Rating
FROM Production.Product p
INNER HASH JOIN Production.ProductReview r ON
r.ProductID = p.ProductID
GO
SET SHOWPLAN_XML OFF
GO
DECLARE @CarrierTrackingNumber nvarchar(25) = '5CE9-4D75-8F'
SELECT SalesOrderID,
ProductID,
UnitPrice,
OrderQty
FROM Sales.SalesOrderDetail
WHERE CarrierTrackingNumber = @CarrierTrackingNumber
ORDER BY SalesOrderID,
ProductID
SELECT cacheobjtype, objtype, usecounts
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
WHERE text LIKE 'DECLARE @CarrierTrackingNumber%'
DBCC FREEPROCCACHE
DECLARE @CarrierTrackingNumber nvarchar(25) = '5CE9-4D75-8F'
SELECT SalesOrderID,
ProductID,
UnitPrice,
OrderQty
FROM Sales.SalesOrderDetail
WHERE CarrierTrackingNumber = @CarrierTrackingNumber
ORDER BY SalesOrderID,
ProductID
OPTION (RECOMPILE)
-- Executing a Query Without Locking
SELECT DocumentID,
Title
FROM Production.Document
WITH (NOLOCK)
WHERE Status = 1
-- Forcing a SEEK over a SCAN
SET SHOWPLAN_XML ON
GO
SELECT DISTINCT TransactionID, TransactionDate
FROM Production.TransactionHistory
WHERE ReferenceOrderID BETWEEN 1000 AND 100000
GO
SET SHOWPLAN_XML OFF
SET SHOWPLAN_XML ON
GO
SELECT DISTINCT TransactionID, TransactionDate
FROM Production.TransactionHistory WITH (FORCESEEK)
WHERE ReferenceOrderID BETWEEN 1000 AND 100000
GO
SET SHOWPLAN_XML OFF
SELECT DISTINCT TransactionID, TransactionDate
FROM Production.TransactionHistory WITH (FORCESEEK, INDEX
(IX_TransactionHistory_ReferenceOrderID_ReferenceOrderLineID))
WHERE ReferenceOrderID BETWEEN 1000 AND 100000