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