1. Out-of-Date or Insufficient Statistics
ALTER DATABASE YourDBName SET AUTO_CREATE_STATISTICS ON
ALTER DATABASE YourDBName SET AUTO_UPDATE_STATISTICS ON
--For SQL Server 2008+
ALTER DATABASE YourDBName SET AUTO_UPDATE_STATISTICS_ASYNC ON
2. Poor Index Design
·                
For composite indexes, keep the most selective
columns leftmost in the index
·                
Index columns used in the joins
·                
Index the most critical queries and transactions
·                
Avoid indexes on columns with poor selectivity
·                
Choose the clustered and nonclustered indexes
carefully
o   In
most cases, use PK for the clustered index
o   Other
cases, make the PK as unique nonclustered index and use other column(s) for the
clustered index
o   Columns
in the WHERE clause
o   Columns
in the ORDER BY clause
o   Columns
in the JOIN clause
3. Search Argument Problems
·                
Better to use constant
·                
Avoid to let the column against an expression, a
variable, or an operation against the column
·                
Avoid to use negative
·                
Avoid to use No SARGs
·                
Avoid to use NULL in WHERE clause
·                
Avoid to use mismatching data types
4. Large Complex Queries
·                
Simplifying the query as much as possible
5. Triggers - Trigger can cause performance problems due
to the statements within the trigger or nested triggers
·                
Tuning the trigger, starting with monitoring the
statement executions within the trigger in the SQL Server Profiler