Queries for FORCESEEK Table Hint


1. FORCESCAN with a Join (Influencing Scan vs. Seek for a Table in a Join)

SQL Server Query 1

            
 SELECT  
C.CompanyName,
COUNT(O.OrderID) AS NumberOfOrders
FROM Customers AS C WITH (FORCESCAN) -- Force a scan on the Customers table
JOIN Orders AS O ON C.CustomerID = O.CustomerID
WHERE O.EmployeeID = 1 -- Filter for a specific employee
GROUP BY C.CompanyName
ORDER BY NumberOfOrders DESC;

Create SQL query with SqlQueryBuilder 1

            
 var (sql1, parameters1) = new SqlQueryBuilder()  
.Select()
.Column("C.CompanyName")
.Column(new COUNT(new Column("O.OrderID")),"NumberOfOrders")
.From("Customers", "C", new List<IHint>() { new FORCESCAN() })
.Join(new List<IJoin>()
{
new INNERJOIN().TableName("Orders", "O")
.On(new Column("C.CustomerID").Equale(new Column("O.CustomerID")))
})
.Where(new Where(new Column("O.EmployeeID").Equale(1)))
.GroupBy(new GroupBy("C.CompanyName"))
.OrderBy(new OrderBy().SetColumnDescending("NumberOfOrders"))
.Build();

Query build by SqlQueryBuilder 1

            
SELECT C.CompanyName,
       COUNT(O.OrderID) AS NumberOfOrders
FROM Customers AS C WITH (FORCESCAN)
     INNER JOIN
     Orders AS O
     ON C.CustomerID = O.CustomerID
WHERE O.EmployeeID = @pMAIN_2507192014395563290
GROUP BY C.CompanyName
ORDER BY NumberOfOrders DESC;


            
        

Parameters (If used)

Name Value
@pMAIN_2507192014395563290 1

Query Results 1:

  CompanyName NumberOfOrders
1 Save-a-lot Markets 6
2 Rattlesnake Canyon Grocery 5
3 Ernst Handel 5
4 Frankenversand 5
5 Berglunds snabbköp 4
6 Königlich Essen 4
7 QUICK-Stop 4
8 Vaffeljernet 4
9 Tortuga Restaurante 4
10 Hanari Carnes 3
11 Around the Horn 3
12 LILA-Supermercado 3
13 Mère Paillarde 3
14 Bon app' 3
15 Bottom-Dollar Markets 2
16 Alfreds Futterkiste 2
17 Drachenblut Delikatessen 2
18 Furia Bacalhau e Frutos do Mar 2
19 LINO-Delicateses 2
20 Eastern Connection 2
21 HILARION-Abastos 2
22 Tradição Hipermercados 2
23 Wolski Zajazd 2
24 Victuailles en stock 2
25 Seven Seas Imports 2
26 Split Rail Beer & Ale 2
27 Magazzini Alimentari Riuniti 2
28 Santé Gourmet 2
29 Reggiani Caseifici 2
30 Ricardo Adocicados 2
31 Richter Supermarkt 1
32 Romero y tomillo 1
33 Rancho grande 1
34 Suprêmes délices 1
35 The Big Cheese 1
36 Wartian Herkku 1
37 Wellington Importadora 1
38 White Clover Markets 1
39 Wilman Kala 1
40 Hungry Coyote Import Store 1
41 Hungry Owl All-Night Grocers 1
42 Island Trading 1
43 La maison d'Asie 1
44 Lazy K Kountry Store 1
45 Let's Stop N Shop 1
46 Lonesome Pine Restaurant 1
47 Old World Delicatessen 1
48 Ottilies Käseladen 1
49 Pericles Comidas clásicas 1
50 Que Delícia 1
51 Galería del gastrónomo 1
52 Godos Cocina Típica 1
53 Gourmet Lanchonetes 1
54 Great Lakes Food Market 1
55 GROSELLA-Restaurante 1
56 Folies gourmandes 1
57 Folk och fä HB 1
58 France restauration 1
59 Franchi S.p.A. 1
60 Du monde entier 1
61 Antonio Moreno Taquería 1
62 B's Beverages 1
63 Chop-suey Chinese 1
64 Comércio Mineiro 1
65 Die Wandernde Kuh 1


2. FORCESCAN with GROUP BY and Aggregations on a Large Table

SQL Server Query 2

            
 SELECT  
OD.ProductID,
SUM(OD.Quantity) AS TotalQuantityOrdered,
AVG(OD.Discount) AS AverageDiscount
FROM [Order Details] AS OD WITH (FORCESCAN) -- Force a scan on the Order Details table
WHERE OD.Quantity > 5
GROUP BY OD.ProductID
ORDER BY TotalQuantityOrdered DESC;

Create SQL query with SqlQueryBuilder 2

            
 var (sql2, parameters2) = new SqlQueryBuilder()  
.Select()
.Column("OD.ProductID")
.Column(new SUM(new Column("OD.Quantity")),"TotalQuantityOrdered")
.Column(new AVG(new Column("OD.Discount")),"AverageDiscount")
.From("[Order Details]", "OD", new List<IHint>() { new FORCESCAN() })
.Where(new Where(new Column("OD.Quantity").GreaterThan(5)))
.GroupBy(new GroupBy("OD.ProductID"))
.OrderBy(new OrderBy().SetColumnDescending("TotalQuantityOrdered"))
.Build();

Query build by SqlQueryBuilder 2

            
SELECT OD.ProductID,
       SUM(OD.Quantity) AS TotalQuantityOrdered,
       AVG(OD.Discount) AS AverageDiscount
FROM [Order Details] AS OD WITH (FORCESCAN)
WHERE OD.Quantity > @pMAIN_2507192014395792120
GROUP BY OD.ProductID
ORDER BY TotalQuantityOrdered DESC;


            
        

Parameters (If used)

Name Value
@pMAIN_2507192014395792120 5

Query Results 2:

  ProductID TotalQuantityOrdered AverageDiscount
1 60 1565 0.0648936179090054
2 59 1485 0.0510000010579824
3 31 1384 0.0608695662054031
4 56 1242 0.0644444454875257
5 16 1147 0.0730769246434554
6 75 1145 0.0500000009183274
7 24 1112 0.0604166674893349
8 40 1081 0.0529411772594732
9 62 1062 0.0559523817861364
10 71 1045 0.0473684216604421
11 2 1044 0.108536586892314
12 21 1003 0.058333334306048
13 17 976 0.0638888893235061
14 76 970 0.047222223236329
15 41 965 0.0441860470834166
16 55 882 0.0851851864545434
17 13 872 0.041176471640082
18 51 869 0.0500000008579456
19 35 865 0.0548387106147505
20 1 810 0.0757575769993392
21 36 795 0.0810344834522954
22 70 793 0.0666666675471898
23 68 787 0.0616666672130426
24 72 786 0.0281250005355105
25 39 777 0.0640000011026859
26 77 770 0.0437500007683411
27 33 751 0.0403225813661852
28 7 750 0.0240000005066395
29 26 741 0.0551724150006113
30 29 740 0.0600000003973643
31 54 740 0.0750000010011718
32 65 738 0.051666667809089
33 10 732 0.0500000010019746
34 64 731 0.0444444449687446
35 69 710 0.0793103458809442
36 53 709 0.0423076930814064
37 19 701 0.0612903231334302
38 11 686 0.057575758207928
39 42 684 0.0634615395504695
40 28 623 0.0375000006918396
41 38 607 0.0500000005587935
42 30 602 0.0660714290237852
43 44 599 0.0565217401346435
44 61 585 0.0850000016391277
45 23 573 0.0416666672875484
46 43 572 0.0538461547918045
47 58 534 0.100000001283156
48 18 531 0.072000000923872
49 46 528 0.0571428583491416
50 49 514 0.0263157902579559
51 34 506 0.0500000007450581
52 45 504 0.0807692325459077
53 52 478 0.0456521745933139
54 47 475 0.0815789479958384
55 4 447 0.0833333343681362
56 63 440 0.0437500006519258
57 57 423 0.0275000002235174
58 14 392 0.0666666674531168
59 8 370 0.0625000012417634
60 27 365 0.0277777777777778
61 22 344 0.0230769231342352
62 12 334 0.059090910310095
63 3 324 0.0181818184527484
64 25 304 0.103333334376415
65 20 302 0.0538461543619633
66 6 300 0.0318181819536469
67 5 294 0.0833333341611756
68 74 292 0.054166667163372
69 32 292 0.0846153861628129
70 73 288 0.0541666680946946
71 50 235 0.025000000372529
72 66 234 0.0416666679084301
73 67 176 0.0437500011175871
74 48 138 0.108333336810271
75 37 124 0.0600000008940697
76 15 117 0.0200000002980232
77 9 92 0.125000001862645


3. FORCESCAN to Avoid Complex Predicate Evaluations or SARGability Issues

SQL Server Query 3

            
 SELECT  
O.OrderID,
O.OrderDate,
DATENAME(weekday, O.OrderDate) AS OrderWeekday
FROM Orders AS O WITH (FORCESCAN) -- Force a scan (likely on OrderDate index or clustered index)
WHERE DATENAME(weekday, O.OrderDate) = 'Monday'
ORDER BY O.OrderDate;

Create SQL query with SqlQueryBuilder 3

            
 var (sql3, parameters3) = new SqlQueryBuilder()  
.Select()
.Columns("O.OrderID", "O.OrderDate")
.Column(new DATENAME(SqlDateInterval.weekday, new Column("O.OrderDate")), "OrderWeekday")
.From("Orders", "O", new List<IHint>() { new FORCESCAN() })
.Where(new Where(new DATENAME(SqlDateInterval.weekday, new Column("O.OrderDate")).Equale("Monday")))
.OrderBy(new OrderBy().SetColumnAscending("O.OrderDate"))
.Build();

Query build by SqlQueryBuilder 3

            
SELECT O.OrderID,
       O.OrderDate,
       DATENAME(weekday, O.OrderDate) AS OrderWeekday
FROM Orders AS O WITH (FORCESCAN)
WHERE DATENAME(weekday, O.OrderDate) = @pMAIN_2507192014395876160
ORDER BY O.OrderDate ASC;


            
        

Parameters (If used)

Name Value
@pMAIN_2507192014395876160 Monday

Query Results 3:

  OrderID OrderDate OrderWeekday
1 10250 7/8/1996 12:00:00 AM Monday
2 10251 7/8/1996 12:00:00 AM Monday
3 10256 7/15/1996 12:00:00 AM Monday
4 10262 7/22/1996 12:00:00 AM Monday
5 10267 7/29/1996 12:00:00 AM Monday
6 10273 8/5/1996 12:00:00 AM Monday
7 10278 8/12/1996 12:00:00 AM Monday
8 10284 8/19/1996 12:00:00 AM Monday
9 10289 8/26/1996 12:00:00 AM Monday
10 10295 9/2/1996 12:00:00 AM Monday
11 10300 9/9/1996 12:00:00 AM Monday
12 10301 9/9/1996 12:00:00 AM Monday
13 10306 9/16/1996 12:00:00 AM Monday
14 10312 9/23/1996 12:00:00 AM Monday
15 10317 9/30/1996 12:00:00 AM Monday
16 10323 10/7/1996 12:00:00 AM Monday
17 10328 10/14/1996 12:00:00 AM Monday
18 10334 10/21/1996 12:00:00 AM Monday
19 10339 10/28/1996 12:00:00 AM Monday
20 10345 11/4/1996 12:00:00 AM Monday
21 10350 11/11/1996 12:00:00 AM Monday
22 10351 11/11/1996 12:00:00 AM Monday
23 10356 11/18/1996 12:00:00 AM Monday
24 10362 11/25/1996 12:00:00 AM Monday
25 10369 12/2/1996 12:00:00 AM Monday
26 10376 12/9/1996 12:00:00 AM Monday
27 10377 12/9/1996 12:00:00 AM Monday
28 10383 12/16/1996 12:00:00 AM Monday
29 10384 12/16/1996 12:00:00 AM Monday
30 10390 12/23/1996 12:00:00 AM Monday
31 10391 12/23/1996 12:00:00 AM Monday
32 10398 12/30/1996 12:00:00 AM Monday
33 10405 1/6/1997 12:00:00 AM Monday
34 10412 1/13/1997 12:00:00 AM Monday
35 10419 1/20/1997 12:00:00 AM Monday
36 10426 1/27/1997 12:00:00 AM Monday
37 10427 1/27/1997 12:00:00 AM Monday
38 10433 2/3/1997 12:00:00 AM Monday
39 10434 2/3/1997 12:00:00 AM Monday
40 10440 2/10/1997 12:00:00 AM Monday
41 10441 2/10/1997 12:00:00 AM Monday
42 10448 2/17/1997 12:00:00 AM Monday
43 10455 2/24/1997 12:00:00 AM Monday
44 10462 3/3/1997 12:00:00 AM Monday
45 10469 3/10/1997 12:00:00 AM Monday
46 10476 3/17/1997 12:00:00 AM Monday
47 10477 3/17/1997 12:00:00 AM Monday
48 10483 3/24/1997 12:00:00 AM Monday
49 10484 3/24/1997 12:00:00 AM Monday
50 10490 3/31/1997 12:00:00 AM Monday
51 10491 3/31/1997 12:00:00 AM Monday
52 10498 4/7/1997 12:00:00 AM Monday
53 10505 4/14/1997 12:00:00 AM Monday
54 10512 4/21/1997 12:00:00 AM Monday
55 10519 4/28/1997 12:00:00 AM Monday
56 10526 5/5/1997 12:00:00 AM Monday
57 10527 5/5/1997 12:00:00 AM Monday
58 10533 5/12/1997 12:00:00 AM Monday
59 10534 5/12/1997 12:00:00 AM Monday
60 10540 5/19/1997 12:00:00 AM Monday
61 10541 5/19/1997 12:00:00 AM Monday
62 10548 5/26/1997 12:00:00 AM Monday
63 10555 6/2/1997 12:00:00 AM Monday
64 10562 6/9/1997 12:00:00 AM Monday
65 10569 6/16/1997 12:00:00 AM Monday
66 10576 6/23/1997 12:00:00 AM Monday
67 10577 6/23/1997 12:00:00 AM Monday
68 10583 6/30/1997 12:00:00 AM Monday
69 10584 6/30/1997 12:00:00 AM Monday
70 10590 7/7/1997 12:00:00 AM Monday
71 10591 7/7/1997 12:00:00 AM Monday
72 10598 7/14/1997 12:00:00 AM Monday
73 10605 7/21/1997 12:00:00 AM Monday
74 10612 7/28/1997 12:00:00 AM Monday
75 10619 8/4/1997 12:00:00 AM Monday
76 10626 8/11/1997 12:00:00 AM Monday
77 10627 8/11/1997 12:00:00 AM Monday
78 10635 8/18/1997 12:00:00 AM Monday
79 10643 8/25/1997 12:00:00 AM Monday
80 10644 8/25/1997 12:00:00 AM Monday
81 10651 9/1/1997 12:00:00 AM Monday
82 10652 9/1/1997 12:00:00 AM Monday
83 10660 9/8/1997 12:00:00 AM Monday
84 10668 9/15/1997 12:00:00 AM Monday
85 10669 9/15/1997 12:00:00 AM Monday
86 10676 9/22/1997 12:00:00 AM Monday
87 10677 9/22/1997 12:00:00 AM Monday
88 10685 9/29/1997 12:00:00 AM Monday
89 10693 10/6/1997 12:00:00 AM Monday
90 10694 10/6/1997 12:00:00 AM Monday
91 10701 10/13/1997 12:00:00 AM Monday
92 10702 10/13/1997 12:00:00 AM Monday
93 10710 10/20/1997 12:00:00 AM Monday
94 10718 10/27/1997 12:00:00 AM Monday
95 10719 10/27/1997 12:00:00 AM Monday
96 10726 11/3/1997 12:00:00 AM Monday
97 10727 11/3/1997 12:00:00 AM Monday
98 10735 11/10/1997 12:00:00 AM Monday
99 10743 11/17/1997 12:00:00 AM Monday
100 10744 11/17/1997 12:00:00 AM Monday
101 10751 11/24/1997 12:00:00 AM Monday
102 10752 11/24/1997 12:00:00 AM Monday
103 10760 12/1/1997 12:00:00 AM Monday
104 10768 12/8/1997 12:00:00 AM Monday
105 10769 12/8/1997 12:00:00 AM Monday
106 10776 12/15/1997 12:00:00 AM Monday
107 10777 12/15/1997 12:00:00 AM Monday
108 10788 12/22/1997 12:00:00 AM Monday
109 10789 12/22/1997 12:00:00 AM Monday
110 10790 12/22/1997 12:00:00 AM Monday
111 10801 12/29/1997 12:00:00 AM Monday
112 10802 12/29/1997 12:00:00 AM Monday
113 10813 1/5/1998 12:00:00 AM Monday
114 10814 1/5/1998 12:00:00 AM Monday
115 10815 1/5/1998 12:00:00 AM Monday
116 10826 1/12/1998 12:00:00 AM Monday
117 10827 1/12/1998 12:00:00 AM Monday
118 10838 1/19/1998 12:00:00 AM Monday
119 10839 1/19/1998 12:00:00 AM Monday
120 10840 1/19/1998 12:00:00 AM Monday
121 10851 1/26/1998 12:00:00 AM Monday
122 10852 1/26/1998 12:00:00 AM Monday
123 10863 2/2/1998 12:00:00 AM Monday
124 10864 2/2/1998 12:00:00 AM Monday
125 10865 2/2/1998 12:00:00 AM Monday
126 10876 2/9/1998 12:00:00 AM Monday
127 10877 2/9/1998 12:00:00 AM Monday
128 10888 2/16/1998 12:00:00 AM Monday
129 10889 2/16/1998 12:00:00 AM Monday
130 10890 2/16/1998 12:00:00 AM Monday
131 10901 2/23/1998 12:00:00 AM Monday
132 10902 2/23/1998 12:00:00 AM Monday
133 10917 3/2/1998 12:00:00 AM Monday
134 10918 3/2/1998 12:00:00 AM Monday
135 10919 3/2/1998 12:00:00 AM Monday
136 10934 3/9/1998 12:00:00 AM Monday
137 10935 3/9/1998 12:00:00 AM Monday
138 10936 3/9/1998 12:00:00 AM Monday
139 10950 3/16/1998 12:00:00 AM Monday
140 10951 3/16/1998 12:00:00 AM Monday
141 10952 3/16/1998 12:00:00 AM Monday
142 10953 3/16/1998 12:00:00 AM Monday
143 10967 3/23/1998 12:00:00 AM Monday
144 10968 3/23/1998 12:00:00 AM Monday
145 10969 3/23/1998 12:00:00 AM Monday
146 10984 3/30/1998 12:00:00 AM Monday
147 10985 3/30/1998 12:00:00 AM Monday
148 10986 3/30/1998 12:00:00 AM Monday
149 11000 4/6/1998 12:00:00 AM Monday
150 11001 4/6/1998 12:00:00 AM Monday
151 11002 4/6/1998 12:00:00 AM Monday
152 11003 4/6/1998 12:00:00 AM Monday
153 11017 4/13/1998 12:00:00 AM Monday
154 11018 4/13/1998 12:00:00 AM Monday
155 11019 4/13/1998 12:00:00 AM Monday
156 11034 4/20/1998 12:00:00 AM Monday
157 11035 4/20/1998 12:00:00 AM Monday
158 11036 4/20/1998 12:00:00 AM Monday
159 11050 4/27/1998 12:00:00 AM Monday
160 11051 4/27/1998 12:00:00 AM Monday
161 11052 4/27/1998 12:00:00 AM Monday
162 11053 4/27/1998 12:00:00 AM Monday
163 11067 5/4/1998 12:00:00 AM Monday
164 11068 5/4/1998 12:00:00 AM Monday
165 11069 5/4/1998 12:00:00 AM Monday


4. FORCESCAN for a Full Table Read in a Join Context

SQL Server Query 4

            
 SELECT  
C.CompanyName,
O.OrderID,
O.OrderDate
FROM Customers AS C WITH (FORCESCAN) -- Force a scan on the Customers table
JOIN Orders AS O ON C.CustomerID = O.CustomerID
WHERE O.OrderDate BETWEEN '1997-01-01' AND '1997-03-31'
ORDER BY C.CompanyName, O.OrderDate;

Create SQL query with SqlQueryBuilder 4

            
 var (sql4, parameters4) = new SqlQueryBuilder()  
.Select()
.Columns("C.CompanyName","O.OrderID","O.OrderDate")
.From("Customers","C", new List<IHint>() { new FORCESCAN() })
.Join(new List<IJoin>()
{
new INNERJOIN().TableName("Orders", "O")
.On(new Column("C.CustomerID").Equale(new Column("O.CustomerID")))
})
.Where(new Where(new BETWEEN(new Column("O.OrderDate"), "1997-01-01", "1997-03-31")))
.OrderBy(new OrderBy()
.SetColumnAscending("C.CompanyName")
.SetColumnAscending("O.OrderDate"))
.Build();

Query build by SqlQueryBuilder 4

            
SELECT C.CompanyName,
       O.OrderID,
       O.OrderDate
FROM Customers AS C WITH (FORCESCAN)
     INNER JOIN
     Orders AS O
     ON C.CustomerID = O.CustomerID
WHERE O.OrderDate BETWEEN @pMAIN_2507192014395972000 AND @pMAIN_2507192014395972001
ORDER BY C.CompanyName ASC, O.OrderDate ASC;


            
        

Parameters (If used)

Name Value
@pMAIN_2507192014395972000 1997-01-01
@pMAIN_2507192014395972001 1997-03-31

Query Results 4:

  CompanyName OrderID OrderDate
1 Around the Horn 10453 2/21/1997 12:00:00 AM
2 Berglunds snabbköp 10444 2/12/1997 12:00:00 AM
3 Berglunds snabbköp 10445 2/13/1997 12:00:00 AM
4 Blondesddsl père et fils 10436 2/5/1997 12:00:00 AM
5 Blondesddsl père et fils 10449 2/18/1997 12:00:00 AM
6 Bon app' 10470 3/11/1997 12:00:00 AM
7 Bottom-Dollar Markets 10410 1/10/1997 12:00:00 AM
8 Bottom-Dollar Markets 10411 1/10/1997 12:00:00 AM
9 Bottom-Dollar Markets 10431 1/30/1997 12:00:00 AM
10 B's Beverages 10471 3/11/1997 12:00:00 AM
11 B's Beverages 10484 3/24/1997 12:00:00 AM
12 Comércio Mineiro 10466 3/6/1997 12:00:00 AM
13 Consolidated Holdings 10435 2/4/1997 12:00:00 AM
14 Consolidated Holdings 10462 3/3/1997 12:00:00 AM
15 Eastern Connection 10400 1/1/1997 12:00:00 AM
16 Ernst Handel 10402 1/2/1997 12:00:00 AM
17 Ernst Handel 10403 1/3/1997 12:00:00 AM
18 Ernst Handel 10430 1/30/1997 12:00:00 AM
19 Ernst Handel 10442 2/11/1997 12:00:00 AM
20 Familia Arquibaldo 10414 1/14/1997 12:00:00 AM
21 Folies gourmandes 10408 1/8/1997 12:00:00 AM
22 Folies gourmandes 10480 3/20/1997 12:00:00 AM
23 Folk och fä HB 10434 2/3/1997 12:00:00 AM
24 Folk och fä HB 10460 2/28/1997 12:00:00 AM
25 Franchi S.p.A. 10422 1/22/1997 12:00:00 AM
26 Frankenversand 10488 3/27/1997 12:00:00 AM
27 Furia Bacalhau e Frutos do Mar 10464 3/4/1997 12:00:00 AM
28 Furia Bacalhau e Frutos do Mar 10491 3/31/1997 12:00:00 AM
29 Galería del gastrónomo 10426 1/27/1997 12:00:00 AM
30 Gourmet Lanchonetes 10423 1/23/1997 12:00:00 AM
31 HILARION-Abastos 10476 3/17/1997 12:00:00 AM
32 HILARION-Abastos 10486 3/26/1997 12:00:00 AM
33 HILARION-Abastos 10490 3/31/1997 12:00:00 AM
34 Hungry Coyote Import Store 10415 1/15/1997 12:00:00 AM
35 Hungry Owl All-Night Grocers 10429 1/29/1997 12:00:00 AM
36 Island Trading 10473 3/13/1997 12:00:00 AM
37 Königlich Essen 10456 2/25/1997 12:00:00 AM
38 Königlich Essen 10457 2/25/1997 12:00:00 AM
39 Königlich Essen 10468 3/7/1997 12:00:00 AM
40 La maison d'Asie 10413 1/14/1997 12:00:00 AM
41 La maison d'Asie 10425 1/24/1997 12:00:00 AM
42 La maison d'Asie 10454 2/21/1997 12:00:00 AM
43 Lazy K Kountry Store 10482 3/21/1997 12:00:00 AM
44 LILA-Supermercado 10461 2/28/1997 12:00:00 AM
45 LINO-Delicateses 10405 1/6/1997 12:00:00 AM
46 LINO-Delicateses 10485 3/25/1997 12:00:00 AM
47 Magazzini Alimentari Riuniti 10404 1/3/1997 12:00:00 AM
48 Magazzini Alimentari Riuniti 10467 3/6/1997 12:00:00 AM
49 Mère Paillarde 10424 1/23/1997 12:00:00 AM
50 Mère Paillarde 10439 2/7/1997 12:00:00 AM
51 Océano Atlántico Ltda. 10409 1/9/1997 12:00:00 AM
52 Old World Delicatessen 10441 2/10/1997 12:00:00 AM
53 Ottilies Käseladen 10407 1/7/1997 12:00:00 AM
54 Pericles Comidas clásicas 10474 3/13/1997 12:00:00 AM
55 Piccolo und mehr 10427 1/27/1997 12:00:00 AM
56 Piccolo und mehr 10489 3/28/1997 12:00:00 AM
57 Princesa Isabel Vinhos 10433 2/3/1997 12:00:00 AM
58 Princesa Isabel Vinhos 10477 3/17/1997 12:00:00 AM
59 Que Delícia 10421 1/21/1997 12:00:00 AM
60 Queen Cozinha 10406 1/7/1997 12:00:00 AM
61 Queen Cozinha 10487 3/26/1997 12:00:00 AM
62 QUICK-Stop 10418 1/17/1997 12:00:00 AM
63 QUICK-Stop 10451 2/19/1997 12:00:00 AM
64 Rancho grande 10448 2/17/1997 12:00:00 AM
65 Rattlesnake Canyon Grocery 10401 1/1/1997 12:00:00 AM
66 Rattlesnake Canyon Grocery 10479 3/19/1997 12:00:00 AM
67 Reggiani Caseifici 10428 1/28/1997 12:00:00 AM
68 Reggiani Caseifici 10443 2/12/1997 12:00:00 AM
69 Ricardo Adocicados 10447 2/14/1997 12:00:00 AM
70 Ricardo Adocicados 10481 3/20/1997 12:00:00 AM
71 Richter Supermarkt 10419 1/20/1997 12:00:00 AM
72 Save-a-lot Markets 10440 2/10/1997 12:00:00 AM
73 Save-a-lot Markets 10452 2/20/1997 12:00:00 AM
74 Seven Seas Imports 10472 3/12/1997 12:00:00 AM
75 Simons bistro 10417 1/16/1997 12:00:00 AM
76 Split Rail Beer & Ale 10432 1/31/1997 12:00:00 AM
77 Suprêmes délices 10458 2/26/1997 12:00:00 AM
78 Suprêmes délices 10463 3/4/1997 12:00:00 AM
79 Suprêmes délices 10475 3/14/1997 12:00:00 AM
80 Toms Spezialitäten 10438 2/6/1997 12:00:00 AM
81 Toms Spezialitäten 10446 2/14/1997 12:00:00 AM
82 Vaffeljernet 10465 3/5/1997 12:00:00 AM
83 Victuailles en stock 10450 2/19/1997 12:00:00 AM
84 Victuailles en stock 10459 2/27/1997 12:00:00 AM
85 Victuailles en stock 10478 3/18/1997 12:00:00 AM
86 Wartian Herkku 10412 1/13/1997 12:00:00 AM
87 Wartian Herkku 10416 1/16/1997 12:00:00 AM
88 Wartian Herkku 10437 2/5/1997 12:00:00 AM
89 Wartian Herkku 10455 2/24/1997 12:00:00 AM
90 Wellington Importadora 10420 1/21/1997 12:00:00 AM
91 White Clover Markets 10469 3/10/1997 12:00:00 AM
92 White Clover Markets 10483 3/24/1997 12:00:00 AM


5. FORCESCAN on a Large Table with a Non-Selective Join Condition

SQL Server Query 5

            
 SELECT  
P.ProductName,
OD.OrderID,
OD.Quantity
FROM Products AS P
JOIN [Order Details] AS OD WITH (FORCESCAN) -- Force a scan on the Order Details table
ON P.ProductID = OD.ProductID
WHERE OD.ProductID IN (1, 2, 3, 4, 5);

Create SQL query with SqlQueryBuilder 5

            
 var (sql5, parameters5) = new SqlQueryBuilder()  
.Select()
.Columns("P.ProductName", "OD.OrderID", "OD.Quantity")
.From("Products", "P")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName("[Order Details]", "OD", new List<IHint>() { new FORCESCAN() })
.On(new Column("P.ProductID").Equale(new Column("OD.ProductID")))
})
.Where(new Where(new IN(new Column("OD.ProductID"), 1, 2, 3, 4, 5)))
.Build();

Query build by SqlQueryBuilder 5

            
SELECT P.ProductName,
       OD.OrderID,
       OD.Quantity
FROM Products AS P
     INNER JOIN
     [Order Details] AS OD WITH (FORCESCAN)
     ON P.ProductID = OD.ProductID
WHERE OD.ProductID IN (@pMAIN_2507192014396070860, @pMAIN_2507192014396070861, @pMAIN_2507192014396070862, @pMAIN_2507192014396070863, @pMAIN_2507192014396070864);


            
        

Parameters (If used)

Name Value
@pMAIN_2507192014396070860 1
@pMAIN_2507192014396070861 2
@pMAIN_2507192014396070862 3
@pMAIN_2507192014396070863 4
@pMAIN_2507192014396070864 5

Query Results 5:

  ProductName OrderID Quantity
1 Chai 10285 45
2 Chai 10294 18
3 Chai 10317 20
4 Chai 10348 15
5 Chai 10354 12
6 Chai 10370 15
7 Chai 10406 10
8 Chai 10413 24
9 Chai 10477 15
10 Chai 10522 40
11 Chai 10526 8
12 Chai 10576 10
13 Chai 10590 20
14 Chai 10609 3
15 Chai 10611 6
16 Chai 10628 25
17 Chai 10646 15
18 Chai 10689 35
19 Chai 10691 30
20 Chai 10700 5
21 Chai 10729 50
22 Chai 10752 8
23 Chai 10838 4
24 Chai 10847 80
25 Chai 10863 20
26 Chai 10869 40
27 Chai 10905 20
28 Chai 10911 10
29 Chai 10918 60
30 Chai 10935 21
31 Chai 11003 4
32 Chai 11005 2
33 Chai 11006 8
34 Chai 11025 10
35 Chai 11031 45
36 Chai 11035 10
37 Chai 11047 25
38 Chai 11070 40
39 Chang 11070 20
40 Chang 11072 8
41 Chang 11075 10
42 Chang 11077 24
43 Chang 11041 30
44 Chang 11021 11
45 Chang 11049 10
46 Chang 11030 100
47 Chang 10991 50
48 Chang 10939 10
49 Chang 10885 20
50 Chang 10888 20
51 Chang 10866 21
52 Chang 10641 50
53 Chang 10851 5
54 Chang 10852 15
55 Chang 10856 20
56 Chang 10766 40
57 Chang 10787 15
58 Chang 10792 10
59 Chang 10806 20
60 Chang 10813 12
61 Chang 10829 10
62 Chang 10741 15
63 Chang 10703 5
64 Chang 10714 30
65 Chang 10722 3
66 Chang 10632 30
67 Chang 10611 10
68 Chang 10622 20
69 Chang 10485 20
70 Chang 10504 12
71 Chang 10393 25
72 Chang 10264 35
73 Chang 10469 40
74 Chang 10418 60
75 Chang 10435 10
76 Chang 10440 45
77 Chang 10342 24
78 Chang 10327 25
79 Chang 10335 7
80 Chang 10298 40
81 Chang 10255 20
82 Chang 10258 50
83 Aniseed Syrup 10289 30
84 Aniseed Syrup 10405 50
85 Aniseed Syrup 10485 20
86 Aniseed Syrup 10591 14
87 Aniseed Syrup 10742 20
88 Aniseed Syrup 10764 20
89 Aniseed Syrup 10702 6
90 Aniseed Syrup 10540 60
91 Aniseed Syrup 10857 30
92 Aniseed Syrup 10849 49
93 Aniseed Syrup 11017 25
94 Aniseed Syrup 11077 4
95 Chef Anton's Cajun Seasoning 11077 1
96 Chef Anton's Cajun Seasoning 11000 25
97 Chef Anton's Cajun Seasoning 10913 30
98 Chef Anton's Cajun Seasoning 10950 5
99 Chef Anton's Cajun Seasoning 10846 21
100 Chef Anton's Cajun Seasoning 10636 25
101 Chef Anton's Cajun Seasoning 10654 12
102 Chef Anton's Cajun Seasoning 10726 25
103 Chef Anton's Cajun Seasoning 10704 6
104 Chef Anton's Cajun Seasoning 10606 20
105 Chef Anton's Cajun Seasoning 10527 50
106 Chef Anton's Cajun Seasoning 10533 50
107 Chef Anton's Cajun Seasoning 10635 10
108 Chef Anton's Cajun Seasoning 10511 50
109 Chef Anton's Cajun Seasoning 10464 16
110 Chef Anton's Cajun Seasoning 10309 20
111 Chef Anton's Cajun Seasoning 10336 18
112 Chef Anton's Cajun Seasoning 10339 10
113 Chef Anton's Cajun Seasoning 10344 35
114 Chef Anton's Cajun Seasoning 10326 24
115 Chef Anton's Gumbo Mix 10290 20
116 Chef Anton's Gumbo Mix 10258 65
117 Chef Anton's Gumbo Mix 10262 12
118 Chef Anton's Gumbo Mix 10382 32
119 Chef Anton's Gumbo Mix 10635 15
120 Chef Anton's Gumbo Mix 10708 4
121 Chef Anton's Gumbo Mix 10848 30
122 Chef Anton's Gumbo Mix 10958 20
123 Chef Anton's Gumbo Mix 11030 70
124 Chef Anton's Gumbo Mix 11047 30