SQL Clone
SQLServerCentral is supported by Redgate
Log in  ::  Register  ::  Not logged in

Indexes in Sql server

Indexes-Indexing  is way to sort and search records in the table. It will improve the speed of locating and retrieval of records from the table.It can be compared with the index which we use in the book to search a particular record.

In Sql Server there are two types of Index

1) Clustered Index
2) Non Clustered Index

How to create Index in the table:-

Non Clustered Index:-

Suppose we have a table tbl_Student and the Sql script for creating this table is given below:-

CREATE TABLE tbl_Student
    [StudentId] [int] IDENTITY(1,1) NOT NULL,
    [FirstName] [nvarchar](150) ,
    [LastName] [nvarchar](150),
    [Phone] [nvarchar](20),
    [Email] [nvarchar](50),
    [StudentAddress] [nvarchar](200),
    [RegistrationDate] [datetime],
    [Enddate] [datetime]

Suppose it contains the following data-

Now First we can check whether the table contains any index or not.For this we can use the following queries:

sp_helpindex tbl_student

select name from sysindexes where id=object_id('tbl_student')

Now, since we don't make any index on the table tbl_student yet, so when we run the sql statement "sp_helpindex tbl_student" , it will give us the following result:-

The object 'tbl_student' does not have any indexes, or you do not have permissions.

Now , we can make the index on this table by using the following Sql  Statement:- 

 Create Index  (Index name) ON (Table name)(Column Name)

Create Index Index_Firstname on tbl_student(FirstName)  
This sql statement will create a non clustered index "Index_Firstname" on the table tbl_student. We can also make a index on a combination of the columns of the table.This can be done by using the following Sql Statement:-    Create Index  (Index name) ON (Table name)(ColumnName1, ColumnName2)
  For Example:- 
Create Index Index_StudentName on tbl_student(FirstName, Lastname)   
This Sql Statement will create a non clustered Index Index_studentname on the combination of the two columns FirstName and LastName. 
Clustered Index:-  We can also create a Clustered index by using the given Sql Statement:-
Create Clustered Index (Index name ) on Table Name (Column Name)
For Example, 
Create clustered Index Index_Studentid on tbl_student(Studentid)     
The above Sql statement will create a Clustered index Index_Studentid on the table tbl_student. Now we can use the Sql Statements, which I described earlier to find out all the index made on the table tbl_student If we execute the statement "sp_helpindex tbl_student" , it will give us the following results:-   
 Droping an Index We can drop an Index by using the following Sql Statement:- Drop Index (Index Name) on (Table Name)  
  For Example,
Drop Index Index_Firstname on Tbl_student
The Above Sql Statement will delete the Index  Index_Firstname on the table tbl_student. Now if we execute the statement "sp_helpindex tbl_student" , it will give us the following results:-    
   There are some difference between the Clustered Index and Non Clustered Index.You can read these difference in my article "Difference between Clustered Index and Non Clustered Index".You can also click on the given url to read this article   http://vivekjohari.blogspot.com/2010/01/difference-between-clustered-and.html  

Vivek's SQL Notes

Vivek johari is currently a Analyst and have more that 5.5 yeras of experience in database. He has Master degree in Computer and also he is Microsoft certified Sql DBA (MCTS)& Microsoft certified SQl BI professional(MCTS). He is also Oracle certified profession(OCP)DBA in ORACLE 10g and ORACLE 9i.He has the experience of working in PL/SQL, T-SQL and SSIS/SSRS. His work basically involved designing and optimization of the Database.He has also published many database articles on his blog Technologies with Vivek Johari.


No comments.

Leave a Comment

Please register or log in to leave a comment.