Skip to content

How to Create Non Clustered Index in Sql

Last Updated on September 18, 2022 by Climent Rick

SQL Server supports two types of indexes: clustered and nonclustered. Clustered indexes sort and store the data rows in the table or view based on their key values. There is only one clustered index per table, because the data rows can be stored in only one order.

Nonclustered indexes have a structure separate from the data rows. A nonclustered index contains the nonclustered index key values and each key value entry has a pointer to the data row that contains that key value.

Creating a Non-Clustered Index

  • Right-click the table on which you want to create a non clustered index and select Design
  • In the Index/Keys dialog box, click Add
  • Type a name for the new index in the Index Name column
  • For each column that you want to include in the index, set the Indexed property to Yes (No Duplicates) or Yes (Duplicates OK), as appropriate
  • The key columns must be included in the order that they will appear in the index key
  • If you are creating a composite index, you can include up to 16 columns in an index key
  • To improve performance, keep the total size of all indexed columns smaller than 900 bytes whenever possible 5
  • When finished adding columns, click Close to return to Table Designer

Create Nonclustered Index Multiple Columns Sql Server

In SQL Server, a nonclustered index is an index structure separate from the data rows of a table or view. A nonclustered index contains the columns that have been defined for the index, and pointers to the data rows. The data rows are not stored in the order of their nonclustered indexes.

A clustered index is a special type of index that reorders the physical storage order of the table or view according to the clustered index key values. There can only be one clustered index per table, because the data rows themselves can only be sorted in one order. Nonclustered indexes have three main benefits over clustered indexes:

1) Nonclustered indexes can be used on views as well as tables. 2) You can create more than one nonclusteredindex on a single table or view 3) The leaf level pages of a nonclusteredindex are smaller than corresponding pages at the leaf level of a clusteredindex, so less disk I/O is required to access them.

Non Clustered Index Sql

A non-clustered index is a type of index that does not physically order the data rows in the table according to the key values. Rather, the leaf nodes of a non-clustered index contain pointers to the data rows, which are stored in their original locations (called “row locators”) on disk. This has several consequences:

1) A non-clustered index can be created on any column(s) of a table, regardless of whether there is already a clustered index defined on the table. In fact, most tables will have at least one non-clustered index in addition to any clustered indexes that might exist. 2) Since the data rows are not physically ordered according to the key values, a range scan on a non-clustered index will generally require more I/O than an equivalent range scan on a clustered index.

This is because each seek operation will likely need to retrieve multiple pages from both the leaf nodes and data pages before it can return all of the requested data. 3) The extra I/O associated with range scans aside, query performance for point queries (i.e., queries that request a single row based on its key value) is typically quite good for both clustered and non-clustered indexes. In general, SQL Server will use whichever type of index provides better performance for a given query; there is no need to specifically choose between clustered and non-clustered indexes when designing your database schema.

Create Non-Clustered Index Include

When you create a non-clustered index, you have the option to include additional columns in the index. Including additional columns in the index can improve query performance because it reduces index key lookups. Let’s say you have a table with three columns: column1, column2, and column3.

You create a non-clustered index on column1 and include column2 in the index. When someone runs a query that filter on both column1 and column2, the query can use the non-clustered index to find the rows without having to look up the data in column2. This is because all of the data for both columns is stored in the same place (the leaf nodes of the index).

Including additional columns in an index does come at a cost. The more columns you include in an index, the bigger theindex will be. This can impact query performance if your queries are IO bound (meaning they are limited by how fast they can read data from disk).

So, it’s important to carefully consider whichcolumns to include when creating a non-clusteredindex.

Non Clustered Index Example

An index is a data structure that improves the speed of data retrieval operations on a database table at the cost of additional writes and storage space to maintain the index data. Indexes can be created using one or more columns of a database table, providing the basis for both rapid random lookups and efficient ordering of access to records. A non-clustered index does not store the data for the indexed columns in the index structure itself.

Rather, it stores pointers to the actual location of the rows containing the indexed column values. This row location is called an RID (row identifier).

How Many Non Clustered Index in Sql Server

SQL Server allows a maximum of 999 non-clustered indexes per table, but only one can be created on a column with the Unique property.

How to Create Non Clustered Index in Sql
How to Create Non Clustered Index in Sql 2


How Do You Create a Non-Clustered Index Table?

A non-clustered index table is a type of index table that does not store data in a cluster. Instead, it stores data in a separate table that can be accessed by the index. This type of index is typically used for small tables or for tables that are not often accessed by the user.

What is a Nonclustered Index in Sql?

A nonclustered index is a type of index that does not sort or store data based on the clustered index key. Nonclustered indexes are stored in a B-tree structure and can be used to improve query performance by providing quick access to specific rows of data.

What is Non-Clustered Index With Example?

A non-clustered index is a type of index that does not store data in the same physical order as the clustered index. Instead, it stores a pointer to the data location. This means that non-clustered indexes can be used to speed up access to data without changing the way the data is physically stored.

For example, assume you have a table of customer information with columns for customer ID, name, and address. The customer ID column is the clustered index because it is used to physically store the data in order. The name and address columns are non-clustered indexes.

When you search for a customer by name, the database engine will first use the non-clustered index on the name column to quickly narrow down which rows contain that name. It will then follow the pointers from the non-clustered index to find those rows in the clustered index (customer ID).

How Do I Create a Non Unique Clustered Index in Sql Server?

In SQL Server, a clustered index is a type of index that reorders the physical order of the table to match the left-to-right order of the keys. A clustered index is automatically created when a primary key is defined for a table. A nonclustered index does not alter the physical order of the table and consists of a separate structure containing the index key values and pointers to the data pages.

Nonclustered indexes can be created on any column in a table, even those that do not allow null values.


Creating a non clustered index in SQL is a simple process that can be completed in just a few steps. First, identify the column or columns on which you want to create the index. Second, use the CREATE INDEX statement to create the index.

Finally, specify the name of the table and the column or columns on which you want to create the index.

Leave a Reply

Your email address will not be published.