SQL Server Hints

The following table highlights SQL hints based on MS SQL Server hints optimization:

Category

Hint

Available For

Notes

JOIN

LOOP

SELECT/UPDATE/DELETE

Not applicable for RIGHT OUTER or FULL joins.

JOIN

HASH

SELECT/UPDATE/DELETE

-

JOIN

MERGE

SELECT/UPDATE/DELETE

-

JOIN

REMOTE

SELECT/UPDATE/DELETE

Only for INNER JOINs. Not applicable with COLLATE

 

 

SELECT/UPDATE/DELETE

-

QUERY

RECOMPILE

SELECT/UPDATE/DELETE

-

QUERY

FORCE ORDER

SELECT/UPDATE/DELETE

-

QUERY

ROBUST PLAN

SELECT/UPDATE/DELETE

-

QUERY

KEEP PLAN

SELECT/UPDATE/DELETE

-

QUERY

KEEPFIXED PLAN

SELECT/UPDATE/DELETE

-

QUERY

EXPAND VIEWS

DML Statements

Only for statement containing views.

QUERY

HASH GROUP

SELECT

Only when GROUP BY, COMPUTE and DISTINCT clauses are used.

QUERY

ORDER GROUP

SELECT/UPDATE/DELETE

Only when GROUP BY, COMPUTE and DISTINCT clauses are used.

QUERY

MERGE UNION

SELECT

Only for statements chained using UNION

QUERY

HASH UNION

SELECT

Only for statements chained using UNION

QUERY

CONCAT UNION

SELECT

Only for statements chained using UNION

QUERY

LOOP JOIN

SELECT/UPDATE/DELETE

-

QUERY

MERGE JOIN

SELECT/UPDATE/DELETE

-

QUERY

HASH JOIN

SELECT/UPDATE/DELETE

-

TABLE

INDEX()

DML Statements

Only for tables and views with indexes.

TABLE

KEEPIDENTITY

INSERT

Only for INSERT statements using OPENROWSET clause with BULK option.

TABLE

KEEPDEFAULTS

INSERT

Only for INSERT statements using OPENROWSET clause with BULK option.

TABLE

HOLDLOCK

DML Statements

Not applicable for SELECT statements using FOR BROWSE clause.

TABLE

IGNORE_CONSTRAINTS

INSERT

Only for INSERT statements using OPENROWSET clause with BULK option.

TABLE

IGNORE_TRIGGERS

INSERT

Only for INSERT statements using OPENROWSET clause with BULK option.

TABLE

NOLOCK

SELECT/UPDATE/COMPLETE

Not applicable for the target table in UPDATE/DELETE statements.

TABLE

NOWAIT

DML Statements

-

TABLE

PAGLOCK

DML Statements

-

TABLE

READCOMMITED

DML Statements

-

TABLE

READCOMMITEDLOCK

SELECT/UPDATE/COMPLETE

-

TABLE

READPAST

SELECT/UPDATE/COMPLETE

Not applicable for the target table in UPDATE/DELETE statements.

TABLE

READUNCOMMITED

SELECT/UPDATE/COMPLETE

Not applicable for the target table in UPDATE/DELETE statements.

TABLE

REPEATEABLEREAD

DML Statements

-

TABLE

ROWLOCK

DML Statements

-

TABLE

SERIALIZABLE

DML Statements

Not applicable for SELECT statements using FOR BROWSE clause.

TABLE

TABLOCK

DML Statements

-

TABLE

TABLOCKX

DML Statements

-

TABLE

UPDLOCK

DML Statements

-

TABLE

XLOCK

DML Statements

-

TABLE

FASTFIRSTROW

DML Statements

-