Database Without Index
Lets assume Sql Server, MySql and Oracle doesn’t
How to handle this siltation?
Why Indexes has introduced in the database?
Benefit of In Built Index
When data is inserted in the table, same data is also
inserted into the index.
When data is deleted from the table same, data is also
deleted from the index.
When data is updated in the table, same data is also
updated in the index.
Table design doesn’t decide index.
It may help some extent .
Primary key should be primary index (Clustered
index) of a table.
All tables should have a clustered index on a
primary key column
Where To Start?
OLAP (Online Analytical Processing)
OLTP (Online Transaction Processing)
What data is needed from a table?
What queries are executing on a table?
How To Know What Queries Are Executing ?
Find out all the in-lines queries.
Find out all the queries from stored procedures
and database functions.
Use DMVS or metadata tables to get queries.
Steps To Create Indexes
Identify the application nature(OLAP OLTP)
OLAP: Create index if necessary.
OLTP: Create index if very necessary.
OLAP + OLTP
Sort the all queries on the base of frequency of
execution and query execution time.
Create indexes on a table if the queries which fetch data
from a table have at least following clauses:
Clause Logical Processing Order
GROUP BY 3
ORDER BY 5
Create index on the fields in which data are filtered only using
following operators in WHERE clause, ON clause and HAVING clause:
Don't create indexes on the columns which are
expression in the query.
We will discuss later how to create indexes of
Order of column name in an index
CREATE INDEX NCI_a_b ON tblEmployee(a,b)
CREATE INDEX NCI_b_a ON tblEmployee(b,a)
Here index NCI_a_b and NCI_b_a are two totally different
Try to avoid creating single column indexes if
multi column index is possible.
If we are creating multi column index, keep
columns order according to logical order of
processing of different clauses.
Keep the all columns with equality operator first.
One columns with range operators is allowed .
If columns with range operator has not included
then only columns in GROUP BY Clause or ORDER
BY clause should be included.
If there are two columns with equality operator
then column which has most number of distinct
values should be included first.