Queries for INDEX Table Hint
1. Forcing Multiple Indexes (Appropraite Indexes are required)
SQL Server Query 1
SELECT
O.OrderID,
O.OrderDate,
C.CompanyName
FROM Orders O WITH (INDEX (CustomerID, OrderDate)) -- Forcing multiple indexes on 'Orders'
JOIN Customers C ON O.CustomerID = C.CustomerID
WHERE O.CustomerID IN ('BLONP','ANTON', 'BONAP') AND O.OrderDate BETWEEN '1997-01-01' AND '1997-06-30';
Create SQL query with SqlQueryBuilder 1
var (sql1, parameters1) = new SqlQueryBuilder()
.Select()
.Columns("O.OrderID","O.OrderDate","C.CompanyName")
.From("Orders","O", new List<IHint>() { new INDEX().SetValues("CustomerID", "OrderDate") })
.Join(new List<IJoin>()
{
new INNERJOIN().TableName("Customers","C")
.On(new Column("O.CustomerID").Equale(new Column("C.CustomerID")))
})
.Where(new Where(new IN(new Column("O.CustomerID"), "BLONP","ANTON","BONAP"))
.AND(new BETWEEN(new Column("O.OrderDate"), "1997-01-01", "1997-06-30")))
.Build();
Query build by SqlQueryBuilder 1
SELECT O.OrderID,
O.OrderDate,
C.CompanyName
FROM Orders AS O WITH (INDEX (CustomerID, OrderDate))
INNER JOIN
Customers AS C
ON O.CustomerID = C.CustomerID
WHERE O.CustomerID IN (@pMAIN_2507192023331680350, @pMAIN_2507192023331680351, @pMAIN_2507192023331680352)
AND O.OrderDate BETWEEN @pMAIN_2507192023331680353 AND @pMAIN_2507192023331680354;
Parameters (If used)
Name |
Value |
@pMAIN_2507192023331680350 |
BLONP |
@pMAIN_2507192023331680351 |
ANTON |
@pMAIN_2507192023331680352 |
BONAP |
@pMAIN_2507192023331680353 |
1997-01-01 |
@pMAIN_2507192023331680354 |
1997-06-30 |
Query Results 1:
|
OrderID |
OrderDate |
CompanyName |
1 |
10436
|
2/5/1997 12:00:00 AM
|
Blondesddsl père et fils
|
2 |
10449
|
2/18/1997 12:00:00 AM
|
Blondesddsl père et fils
|
3 |
10470
|
3/11/1997 12:00:00 AM
|
Bon app'
|
4 |
10507
|
4/15/1997 12:00:00 AM
|
Antonio Moreno Taquería
|
5 |
10511
|
4/18/1997 12:00:00 AM
|
Bon app'
|
6 |
10525
|
5/2/1997 12:00:00 AM
|
Bon app'
|
7 |
10535
|
5/13/1997 12:00:00 AM
|
Antonio Moreno Taquería
|
8 |
10559
|
6/5/1997 12:00:00 AM
|
Blondesddsl père et fils
|
9 |
10566
|
6/12/1997 12:00:00 AM
|
Blondesddsl père et fils
|
10 |
10573
|
6/19/1997 12:00:00 AM
|
Antonio Moreno Taquería
|
11 |
10584
|
6/30/1997 12:00:00 AM
|
Blondesddsl père et fils
|
2. Forcing a Clustered Index (Primary Key) Lookup (Appropraite Indexes are required)
SQL Server Query 2
SELECT
CustomerID,
CompanyName,
ContactName,
City
FROM Customers WITH (INDEX (CompanyName)) -- Explicitly tell it to use the 'CompanyName' index
WHERE CompanyName LIKE 'A%';
Create SQL query with SqlQueryBuilder 2
var (sql2, parameters2) = new SqlQueryBuilder()
.Select()
.Columns("CustomerID","CompanyName","ContactName","City")
.From("Customers", new List<IHint>() { new INDEX().SetValues("CompanyName") })
.Where(new Where(new LIKE(new Column("CompanyName"), "A%")))
.Build();
Query build by SqlQueryBuilder 2
SELECT CustomerID,
CompanyName,
ContactName,
City
FROM Customers WITH (INDEX (CompanyName))
WHERE CompanyName LIKE @pMAIN_2507192023331764980;
Parameters (If used)
Name |
Value |
@pMAIN_2507192023331764980 |
A% |
Query Results 2:
|
CustomerID |
CompanyName |
ContactName |
City |
1 |
ALFKI
|
Alfreds Futterkiste
|
Maria Anders
|
Berlin
|
2 |
ANATR
|
Ana Trujillo Emparedados y helados
|
Ana Trujillo
|
México D.F.
|
3 |
ANTON
|
Antonio Moreno Taquería
|
Antonio Moreno
|
México D.F.
|
4 |
AROUT
|
Around the Horn
|
Thomas Hardy
|
London
|
3. Forcing a Table Scan (INDEX = 0) (Appropraite Indexes are required)
SQL Server Query 3
SELECT
ProductName,
UnitsInStock
FROM Products WITH (INDEX = 0) -- Force a table scan
WHERE UnitsInStock < 10;
Create SQL query with SqlQueryBuilder 3
var (sql3, parameters3) = new SqlQueryBuilder()
.Select()
.Columns("ProductName","UnitsInStock")
.From("Products", new List<IHint>() { new INDEX().SetValues(0) })
.Where(new Where(new Column("UnitsInStock").LessThan(10)))
.Build();
Query build by SqlQueryBuilder 3
SELECT ProductName,
UnitsInStock
FROM Products WITH (INDEX (0))
WHERE UnitsInStock < @pMAIN_2507192023331826380;
Parameters (If used)
Name |
Value |
@pMAIN_2507192023331826380 |
10 |
Query Results 3:
|
ProductName |
UnitsInStock |
1 |
Chef Anton's Gumbo Mix
|
0
|
2 |
Northwoods Cranberry Sauce
|
6
|
3 |
Alice Mutton
|
0
|
4 |
Sir Rodney's Scones
|
3
|
5 |
Thüringer Rostbratwurst
|
0
|
6 |
Gorgonzola Telino
|
0
|
7 |
Mascarpone Fabioli
|
9
|
8 |
Rogede sild
|
5
|
9 |
Perth Pasties
|
0
|
10 |
Louisiana Hot Spiced Okra
|
4
|
11 |
Scottish Longbreads
|
6
|
12 |
Longlife Tofu
|
4
|