database index

15
DATABASE INDEX Sql Server, Mysql, Oracle

Upload: riteshkiit

Post on 18-Dec-2014

108 views

Category:

Software


1 download

DESCRIPTION

How to create indexes. Where to start and best practices

TRANSCRIPT

Page 1: Database index

DATABASE INDEXSql Server, Mysql, Oracle

Page 2: Database index

Database Without Index

Lets assume Sql Server, MySql and Oracle doesn’t support Index.

How to handle this siltation?

Why Indexes has introduced in the database?

Page 3: Database index

Benefit of In Built Index

Data synchronization

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.

Page 4: Database index

How To Create Indexes?

CREATE TABLE tblEmployee(ntEmployeeID BIGINT PRIMARY KEY,

vcEmpName VARCHAR(200),

dtDoj DATETIME,

btGender BIT,

vcSkill VARCHAR(2000),

moSalary MONEY,

ntHirarchyID BIGINT

)

Page 5: Database index

Common Misconception

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

Page 6: Database index

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?

Page 7: Database index

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.

Page 8: Database index

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.

Page 9: Database index

Rule 1

Create indexes on a table if the queries which fetch data from a table have at least following clauses:

Clause Logical Processing OrderON 1WHERE 2GROUP BY 3HAVING 4ORDER BY 5DISTINCT 6UNION NAEXCEPT NAINTERSECT NA

Page 10: Database index

Rule 2

Create index on the fields in which data are filtered only using following operators in WHERE clause, ON clause and HAVING clause:

Operator Type= Equality< Range> Range<= Range>= RangeIN RangeBETWEEN RangeLIKE Range

Page 11: Database index

Rule 3

Don't create indexes on the columns which are expression in the query.

We will discuss later how to create indexes of such predicates.

Page 12: Database index

Order of column name in an index

Index 1:CREATE INDEX NCI_a_b ON tblEmployee(a,b)

  Index 2: CREATE INDEX NCI_b_a ON tblEmployee(b,a)

Here index NCI_a_b and NCI_b_a are two totally different indexes.

Page 13: Database index

Rule 4

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.

Page 14: Database index

Rule 5

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.

Page 15: Database index

Rule 6

If there are two columns with equality operator then column which has most number of distinct values should be included first.