<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkIMSHk-cCp7ImA9WhBaEU4.&quot;"><id>tag:blogger.com,1999:blog-6097409806591916698</id><updated>2013-05-21T03:03:09.758-07:00</updated><category term="Parameter Sniffing" /><category term="Implimentation" /><category term="SAN disk movemnet" /><category term="Alerts" /><category term="Index" /><category term="Failover cluster" /><category term="Troubleshooting" /><category term="SSRS" /><category term="Internals" /><category term="Index Fragmentation" /><category term="Blocking" /><category term="Security" /><category term=".Net Connection Pool" /><category term="xp_cmdshell" /><category term="Database Mail" /><category term="Administration" /><title>SQL Server Solutions with Practical SQL DBA</title><subtitle type="html">You can find workable solution for the problem that you face in your day to day work as a DBA.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.practicalsqldba.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.practicalsqldba.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default?start-index=11&amp;max-results=10&amp;redirect=false&amp;v=2" /><author><name>Nelson John</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-jrulBzTAKh8/AAAAAAAAAAI/AAAAAAAAC_0/p_1c9aZUN7o/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>64</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>10</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/practicalsqldba/yuZS" /><feedburner:info uri="practicalsqldba/yuzs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>practicalsqldba/yuZS</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;A08GSHkzeip7ImA9WhBVEU4.&quot;"><id>tag:blogger.com,1999:blog-6097409806591916698.post-2771265373523261829</id><published>2013-04-16T12:17:00.001-07:00</published><updated>2013-04-16T12:17:09.782-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-16T12:17:09.782-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Index" /><title>SQL Server : Index at a glance </title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In the last ten posts, we have discussed in details about the SQL server index and its storage structure. In this post I will consolidate all the ten post for easy reference.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;What is index ?&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In the first post, we have discussed about index in general. We tried to understand the clustered &amp;nbsp;index non clustered index and key lookup &amp;nbsp;with a sample from real life.&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.practicalsqldba.com/2012/10/sql-server-index-part-1-basics-of-index.html" style="font-family: Arial, Helvetica, sans-serif;"&gt;Read More&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u style="font-family: Arial, Helvetica, sans-serif;"&gt;What is heap table?&lt;/u&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;A table with out clustered index is called heap table. Data in heap table are not stored in any specific order.To understand more about the heap structure &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-index-part-2-structure-of.html"&gt;Read More&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u style="font-family: Arial, Helvetica, sans-serif;"&gt;B tree structure of Clustered index&lt;/u&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;A table with clustered index is called Clustered table.Clustered index stores the actual data in the order of clustering key using a b tree structure.A table can have only one clustered index. To understand more about clustered index table storage and access pattern, read this &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-explaining-clustered-table.html"&gt;article&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;u&gt;B tree structure of a non clustered index on clustered table&lt;/u&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
We can have many non clustered index on a table.To understand about the non clustered index storage structure and the way SQL server use the non clustered index, read &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-part-4-explaining-non.html"&gt;here&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;u&gt;B tree structure of a non clustered index on heap &amp;nbsp;table&lt;/u&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
How non clustered index works on a heap table,&lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-part-5-explaining-non.html"&gt;Read More&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;u&gt;Design Consideration of clustered index key&lt;/u&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
What you should consider while deciding clustered index key. What will happen if you defined a clustered index on a non unique column ? Read the &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-part-6-design-consideration.html"&gt;article&lt;/a&gt; Design Consideration of Clustered index.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;u&gt;Overhead on non clustered index on a non unique column&amp;nbsp;&lt;/u&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
You ever thought about difference in storage structure non clustered index while defining on non unique column. This &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-part-7-non-clustered-index.html"&gt;post&lt;/a&gt; will give you more insight.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;u&gt;How to get rid of key lookup operation ?&amp;nbsp;&lt;/u&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Book mark look up or Key Look up operation is very common in execution plan. How to get rid of that . Learn about covering index and included column in this &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-part-8-explaining-covering.html"&gt;post&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;u&gt;Filtered index with its limitation&amp;nbsp;&lt;/u&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
How to define index on part of the table data ? How to define complex unique constraint on a table. How to improve performance of a query which work on small chunk of table data. Filtered index is the new way to solve the issue. &lt;a href="http://www.practicalsqldba.com/2013/04/sql-server-part-9-filtered-index-new.html"&gt;Read more&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;u&gt;Real time sample of the importance of the index key column order&lt;/u&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
The column order in the index is very important. It define the way data stored.The data access patter will play a major role in deciding the key column order. Shared some thoughts on this &lt;a href="http://www.practicalsqldba.com/2013/04/sql-server-part-10-importance-of-key.html"&gt;article&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/span&gt;If you liked this post, do like my page on &lt;a href="http://www.facebook.com/practicalSqlDba"&gt;FaceBook&lt;/a&gt;&lt;br /&gt;
&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script&gt;(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;

&lt;br /&gt;
&lt;div class="fb-like" data-font="arial" data-href="http://www.facebook.com/practicalSqlDba" data-send="true" data-show-faces="true" data-width="450"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;www.PracticalSqlDba.com&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/practicalsqldba/yuZS/~4/zisq-4BnAOM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.practicalsqldba.com/feeds/2771265373523261829/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.practicalsqldba.com/2013/04/sql-server-index-at-glance.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/2771265373523261829?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/2771265373523261829?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/practicalsqldba/yuZS/~3/zisq-4BnAOM/sql-server-index-at-glance.html" title="SQL Server : Index at a glance " /><author><name>Nelson John</name><uri>https://plus.google.com/101868886149088241868</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-jrulBzTAKh8/AAAAAAAAAAI/AAAAAAAAC_0/p_1c9aZUN7o/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.practicalsqldba.com/2013/04/sql-server-index-at-glance.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEFQ3szeCp7ImA9WhBVEU4.&quot;"><id>tag:blogger.com,1999:blog-6097409806591916698.post-2922967708960837697</id><published>2013-04-16T10:33:00.000-07:00</published><updated>2013-04-16T10:33:32.580-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-16T10:33:32.580-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Index Fragmentation" /><category scheme="http://www.blogger.com/atom/ns#" term="Index" /><title>SQL Server : Part 10: Importance of Key Column Position While Creating Index</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now we have discussed about different types of indexes in the last posts. In this post, let us discuss about the key column order (order of the column of indexes). The order of the key column of the index is decided based on the data access pattern and how do you want to organize the data.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The general guidelines for the order of the index key column is to keep the most selective column as the first column.It does not &amp;nbsp;meant that, a unique id column should be first column of all your index. The optimizer will decide to use the index based on the statistics available on the index. I will explain about the statistics in later post. Statistics gives the information about the density of the key column which give uniqueness of index, and histogram that stores the information about the distribution of the values within the column.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Let us consider an example of customer table which stores the information of customers from across the countries.The application running on top of this table deal with customers from a specific country based on the user permission/access location.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;CREATE &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;customer &lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;Customer_id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;INT &lt;/span&gt;&lt;span style="color: #434343;"&gt;IDENTITY&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;) NOT NULL&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;CountryCode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;CHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;3&lt;/span&gt;&lt;span style="color: grey;"&gt;) NOT NULL,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;FirstName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;100&lt;/span&gt;&lt;span style="color: grey;"&gt;) NOT NULL,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;LastName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;100&lt;/span&gt;&lt;span style="color: grey;"&gt;) NOT NULL,&lt;br /&gt;&amp;nbsp; &amp;nbsp;Mobile&lt;/span&gt;&lt;span style="color: black;"&gt;Phone&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;20&lt;/span&gt;&lt;span style="color: grey;"&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;Email&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;100&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;CREATE UNIQUE CLUSTERED INDEX &lt;/span&gt;&lt;span style="color: black;"&gt;Ix_Customerid_Countrycode&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;ON &lt;/span&gt;&lt;span style="color: black;"&gt;customer&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;Customer_id&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;Countrycode&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;br /&gt; &lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The clustered index is created based on the general guideline to keep the most selective column on the left side.If I need fetch a single records based on the customer_id, this index will work perfectly.So what is the drawback of this index ? In case if I need to fetch all/many customers based on the countrycode , the optimizer opt for clustered index scan.&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px; text-align: left;"&gt;SET STATISTICS IO ON&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px; text-align: left;"&gt;go&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: grey;"&gt;* &lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;customer &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black;"&gt;Countrycode&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: red;"&gt;'VNH' &lt;/span&gt;&lt;span style="color: grey;"&gt;AND &lt;/span&gt;&lt;span style="color: black;"&gt;customer_id&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;1216468&lt;br /&gt; &lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-XxE3WGQ2Ch0/UW16k8AGARI/AAAAAAAADtw/dFdNVzGPfQU/s1600/Index+Key+Order.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="152" src="http://4.bp.blogspot.com/-XxE3WGQ2Ch0/UW16k8AGARI/AAAAAAAADtw/dFdNVzGPfQU/s640/Index+Key+Order.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;Let us try to fetch all customers with countrycode VNH. The table has around 620 thousand records and there are 3066 customers with VNH countrycode&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;*&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;customer&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;Countrycode&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: red;"&gt;'VNH'&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-jGwsimNxioE/UW18NP0k_WI/AAAAAAAADt4/7ADyB2K9UPc/s1600/Index+Key+Order_1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="128" src="http://3.bp.blogspot.com/-jGwsimNxioE/UW18NP0k_WI/AAAAAAAADt4/7ADyB2K9UPc/s640/Index+Key+Order_1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;From the execution plan, it is clear that, optimizer has opted for clustered index scan &amp;nbsp;by scanning all 6825 pages used to store this table. We can optimize this by changing the index with countrycode as the first column.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DROP INDEX &lt;/span&gt;&lt;span style="color: black;"&gt;customer.Ix_CustomerId_CountryCode&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;CREATE UNIQUE CLUSTERED INDEX &lt;/span&gt;&lt;span style="color: black;"&gt;Ix_CountryCode_CustomerId &lt;/span&gt;&lt;span style="color: blue;"&gt;ON &lt;/span&gt;&lt;span style="color: black;"&gt;customer&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;Countrycode&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;Customer_id&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div dir="ltr" style="font-family: 'Times New Roman'; font-size: medium;" trbidi="on"&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px; text-align: left;"&gt;SET STATISTICS IO ON&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px; text-align: left;"&gt;go&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman'; font-size: medium;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;*&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;customer&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;Countrycode&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: red;"&gt;'VNH'&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;AND&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;customer_id&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;1216468&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; font-size: 12px; text-align: center;"&gt;
&lt;code&gt;&lt;a href="http://3.bp.blogspot.com/-HIyJK0PEEcA/UW19jw-ID8I/AAAAAAAADuA/cU64uVE37bA/s1600/Index+Key+Order_2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="http://3.bp.blogspot.com/-HIyJK0PEEcA/UW19jw-ID8I/AAAAAAAADuA/cU64uVE37bA/s640/Index+Key+Order_2.png" width="640" /&gt;&lt;/a&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div style="font-family: 'Times New Roman'; font-size: medium;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;Let us try to fetch all customers with countrycode VNH.&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;
&lt;div style="font-family: 'Times New Roman'; font-size: medium;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman'; font-size: medium;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;*&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;customer&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;Countrycode&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: red;"&gt;'VNH'&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman'; font-size: medium;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Dyty_DVfsSI/UW1-HI1fOxI/AAAAAAAADuI/jVrle-koL0U/s1600/Index+Key+Order_3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="124" src="http://1.bp.blogspot.com/-Dyty_DVfsSI/UW1-HI1fOxI/AAAAAAAADuI/jVrle-koL0U/s640/Index+Key+Order_3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman'; font-size: medium;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;From the execution plan, it is clear that , the optimizer used index seek in both the cases and IO operation has reduced drastically in the scenario while fetching all the customers with VNH countrycode.&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-size: 12px;"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Other problem will be, while keeping the customer_id as the first column , data will be stored in the order of customer_id column and you will have many pages (almost all pages) will have data belongs to multiple countrycode. This may lead to more blocking/deadlock issues.By defining the index with countrycode as the first column, only a few pages will have data overlapped with multiple countrycode and will help to reduce the blocking issues.The important point is, by defining the index with countrycode as the first column will cause for higher level of index fragmentation, but that can be controlled by defining proper fill factor value. I have experienced this in one of our project and experienced lot of improvement after changing the indexes with countrycode as the first column.&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
In short the general guidelines about the key column is a good starting point but at the same time you have to consider the data access pattern in your application.Hope this will help you to resolve some issue that you are facing.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/span&gt;&lt;br /&gt;
If you liked this post, do like my page on &lt;b&gt;&lt;a href="http://www.facebook.com/practicalSqlDba"&gt;FaceBook&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script&gt;(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;

&lt;br /&gt;
&lt;div class="fb-like" data-font="arial" data-href="http://www.facebook.com/practicalSqlDba" data-send="true" data-show-faces="true" data-width="450"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;www.PracticalSqlDba.com&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/practicalsqldba/yuZS/~4/9ZEvjr8HITI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.practicalsqldba.com/feeds/2922967708960837697/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.practicalsqldba.com/2013/04/sql-server-part-10-importance-of-key.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/2922967708960837697?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/2922967708960837697?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/practicalsqldba/yuZS/~3/9ZEvjr8HITI/sql-server-part-10-importance-of-key.html" title="SQL Server : Part 10: Importance of Key Column Position While Creating Index" /><author><name>Nelson John</name><uri>https://plus.google.com/101868886149088241868</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-jrulBzTAKh8/AAAAAAAAAAI/AAAAAAAAC_0/p_1c9aZUN7o/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-XxE3WGQ2Ch0/UW16k8AGARI/AAAAAAAADtw/dFdNVzGPfQU/s72-c/Index+Key+Order.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.practicalsqldba.com/2013/04/sql-server-part-10-importance-of-key.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMHSXgzeCp7ImA9WhBWFEk.&quot;"><id>tag:blogger.com,1999:blog-6097409806591916698.post-2477476441820741738</id><published>2013-04-08T11:57:00.001-07:00</published><updated>2013-04-08T11:57:18.680-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-08T11:57:18.680-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Index" /><title>SQL Server : Part 9 : Filtered Index : A new way for Performance Improvemnt</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Filtered index is a new feature introduced in SQL Server 2008. All the indexes that we have discussed till now were always on the entire table. In other words, Index and table will have same number of records.With filtered index, it is possible to create an index for a subset of the table.This is achieved by adding a where clause in the index creation statement.This helps to reduce the size of index in terms storage as well as depth of the index.The where condition specified in the index creation statement determine the&amp;nbsp;existence of a record in the index.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;This will be a great performance on larger table where a good chunk of queries work on smaller portion of the table.A regular index will be on entire table ignoring the fact that most of the queries are interested in a smaller portion of the index.This makes the index deeper and need more pages to store the index b tree structure which results in more IO. Where as filtered index will be created only for a portion of the table and hence less pages are required to store the index.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Let us consider an example of salesorder table which contain data for last five years. Major part of active queries on this table are based on the last calender year and the current calender year.A simple example of filtered index will be like this.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;CREATE NONCLUSTERED INDEX &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;ix_salesorder_Filter&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;ON &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;salesorder&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;SalesOrderId&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;OrderDate&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;Status&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;Customer_id&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;TotalDue&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black;"&gt;OrderDate&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: red;"&gt;'2012-01-01'&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;Unique column with multiple null values&lt;/u&gt;: One of the significant use of filtered index is to define complex unique constraint on a column. The unique constraint will not allow you to have multiple null values in a unique column. How do you enforce uniqueness on column except for NULL values ? For example , Productcode column &amp;nbsp;in the product table can be null but should be unique if the value is defined on that column. Let us see the below example.&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;CREATE TABLE &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;Product&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;Productid &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;INT &lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;NOT NULL &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;PRIMARY KEY&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;ProductCode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;CHAR&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;10&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;) ,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;ProductName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;100&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;CREATE UNIQUE INDEX &lt;/span&gt;&lt;span style="color: black;"&gt;ix_Unique_Filtered &lt;/span&gt;&lt;span style="color: blue;"&gt;ON &lt;/span&gt;&lt;span style="color: black;"&gt;Product&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;Productcode&lt;/span&gt;&lt;span style="color: grey;"&gt;) &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black;"&gt;productcode &lt;/span&gt;&lt;span style="color: blue;"&gt;IS &lt;/span&gt;&lt;span style="color: grey;"&gt;NOT NULL&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;INSERT INTO &lt;/span&gt;&lt;span style="color: black;"&gt;Product &lt;/span&gt;&lt;span style="color: blue;"&gt;VALUES&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: red;"&gt;'AR-5381'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: red;"&gt;'Adjustable Race'&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;INSERT INTO &lt;/span&gt;&lt;span style="color: black;"&gt;Product &lt;/span&gt;&lt;span style="color: blue;"&gt;VALUES&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;2&lt;/span&gt;&lt;span style="color: grey;"&gt;,NULL,&lt;/span&gt;&lt;span style="color: red;"&gt;'Bearing Ball'&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;INSERT INTO &lt;/span&gt;&lt;span style="color: black;"&gt;Product &lt;/span&gt;&lt;span style="color: blue;"&gt;VALUES&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;3&lt;/span&gt;&lt;span style="color: grey;"&gt;,NULL,&lt;/span&gt;&lt;span style="color: red;"&gt;'BB Ball Bearing'&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;INSERT INTO &lt;/span&gt;&lt;span style="color: black;"&gt;Product &lt;/span&gt;&lt;span style="color: blue;"&gt;VALUES&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;4&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: red;"&gt;'AR-5381'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: red;"&gt;'Adjustable Race-Small'&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;We are able to insert multiple record with NULL value in the productcode column, but when we are trying to insert a record with duplicate value 'AR-5381', it is not allowing to insert duplicate value into the&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Productcode&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;column. The unique filtered index defined on this table help us to enforce this kind of uniqueness.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;Read operation:&lt;/u&gt;&amp;nbsp;The above said is one of the common usage of filtered index.Another usage of filtered index is to support the queries. Let us see a sample below.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;USE &lt;/span&gt;&lt;span style="color: black;"&gt;mydb&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: grey;"&gt;* &lt;/span&gt;&lt;span style="color: blue;"&gt;INTO &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderheader &lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;AdventureWorks2008.Sales.SalesOrderheader&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: green;"&gt;--Unique Clustered index&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;CREATE UNIQUE CLUSTERED INDEX &lt;/span&gt;&lt;span style="color: black;"&gt;ix_SalesOrderheader &lt;/span&gt;&lt;span style="color: blue;"&gt;ON &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderheader&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderid&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: green;"&gt;--Filtered Inde&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;CREATE INDEX &lt;/span&gt;&lt;span style="color: black;"&gt;ix_filtered_index &lt;/span&gt;&lt;span style="color: blue;"&gt;ON &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderheader&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey;"&gt;) &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: red;"&gt;'2008-01-01'&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderid &lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderheader &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: red;"&gt;'2008-05-01'&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderid &lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderheader &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: red;"&gt;'2008-03-01'&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderid &lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderheader &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: red;"&gt;'2007-12-01'&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;An index is defined on the column orderdate for the records which are ordered after 2008-01-01. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;There are three select query with different condition on the orderdate. The first one is trying to fetch a range of records which comes under the filtered criteria (sub set of filtered result). Second query try to select records which ordered on specific date which comes under the filter criteria.The third one also try to fetch the orders placed on a specific date, but that date is not come under the filtered range.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-IXoMjvUTSnI/UWL-z3M3GdI/AAAAAAAADtA/jFt4mPpg244/s1600/Filtered_index__1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="356" src="http://3.bp.blogspot.com/-IXoMjvUTSnI/UWL-z3M3GdI/AAAAAAAADtA/jFt4mPpg244/s640/Filtered_index__1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;The first two queries are made use of the filtered index and the third one gone for clustered index scan. This is because the third query can not be served from filtered index as the predicate of the query is not comes under the filter criteria used in the index creation statement.In short , t&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;he records needed to perform the third select operation is not available in the filtered index.&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;The filtered index gives lots of performance&amp;nbsp;improvement&amp;nbsp;for this type of queries especially when the number of records filtered out are much more than the number of records satisfying the filtering criteria.&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;It is not mandatory that filtering column should be part of the index but in that case predicate &amp;nbsp;of the select statement should exactly match withe filtered index predicate. Let us create an index on orderdate by filtering the records with territoryid&amp;lt;5&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;CREATE INDEX &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;ix_TerritoryID_Filter &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;ON &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;SalesOrderheader &lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;OrderDate&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;) &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;TerritoryID&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;5&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;SELECT &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;salesorderid&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;orderdate &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;FROM &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;SalesOrderheader &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;TerritoryID&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;5&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;SELECT &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;salesorderid&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;orderdate &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;FROM &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;SalesOrderheader &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;TerritoryID&lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;=&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;4&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;Let us see the execution plan of the two select statement.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-col_6O1iU94/UWMF4K14NPI/AAAAAAAADtI/tTmp09snzZA/s1600/Filtered_index__2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/-col_6O1iU94/UWMF4K14NPI/AAAAAAAADtI/tTmp09snzZA/s1600/Filtered_index__2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/-col_6O1iU94/UWMF4K14NPI/AAAAAAAADtI/tTmp09snzZA/s1600/Filtered_index__2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/-col_6O1iU94/UWMF4K14NPI/AAAAAAAADtI/tTmp09snzZA/s1600/Filtered_index__2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="377" src="http://1.bp.blogspot.com/-col_6O1iU94/UWMF4K14NPI/AAAAAAAADtI/tTmp09snzZA/s640/Filtered_index__2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
The predicate of the first statement is  exactly matching with the where condition of the filtered index creation statement. The second statement, is actually a subset of filtered index, but as the columns territoryid is not part of the index , SQL server will not be able to filter the records and hence execution is performed by clustered index scan.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;&lt;span style="text-align: justify;"&gt;&lt;u style="font-family: Arial, Helvetica, sans-serif; font-size: medium;"&gt;Limitation of filtered index &lt;/u&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp; The concept of filtered index is &amp;nbsp;very attractive but there are some limitation in the usage of filtered index , especially when it comes to&amp;nbsp;parameterization.Let us rewrite the query&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style="text-align: justify;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div style="font-family: 'Times New Roman';"&gt;
&lt;code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderid&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderheader&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;span style="color: black; font-size: 12px;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'2008-05-01'&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman';"&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;as&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman';"&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;DECLARE &lt;/span&gt;&lt;span style="color: #434343; font-size: 12px;"&gt;@Orderdate &lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;date&lt;/span&gt;&lt;span style="color: blue; font-size: 12px;"&gt;=&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'2008-05-01'&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderid &lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderheader &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #434343;"&gt;@Orderdate &lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-opRurmNBExg/UWMIl6Ff7aI/AAAAAAAADtQ/MHOa79UTQ0w/s1600/Filtered_index__3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="126" src="http://2.bp.blogspot.com/-opRurmNBExg/UWMIl6Ff7aI/AAAAAAAADtQ/MHOa79UTQ0w/s640/Filtered_index__3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;The execution plan is not utilizing the filtered index when we have rewritten the query with local parameter. The reason behind that is , at the compile time , the query optimizer does not know what value will be passed for the parameter&amp;nbsp;@OrderDate. So optimizer &amp;nbsp;has to generate a safe plan to satisfy all the criteria. This is the same issue when we change the database property to forced parameterization &amp;nbsp;or defined the statement &amp;nbsp;as procedure.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;ALTER DATABASE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;mydb&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-size: 12px;"&gt;SET&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;parameterization forced&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px;"&gt;GO&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;SalesOrderid&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-size: 12px;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;SalesOrderheader&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-size: 12px;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'2008-05-01'&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px;"&gt;GO&lt;/span&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;CREATE PROCEDURE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;GetSalesorder&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: #434343;"&gt;@OrderDate&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;date&lt;/span&gt;&lt;span style="color: grey;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;AS&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;BEGIN&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderid&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderheader&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: #434343;"&gt;@OrderDate&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;END&amp;nbsp;&lt;/span&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;In both these cases optimizer will not use the filtered index as it does not know what value will be passed during the run time and it try to generate a safe plan with out considering the availability of filtered index.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;While we changing the database property parameterization to forced, the optimizer will replace all the static predicate with local variable. For example , the statement&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;SalesOrderid&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-size: 12px;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;SalesOrderheader&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-size: 12px;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'2008-05-01'&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;will be treated as below by the optimizer&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;DECLARE&amp;nbsp;&lt;/span&gt;&lt;span style="color: #434343; font-size: 12px;"&gt;@Orderdate&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;date&lt;/span&gt;&lt;span style="color: blue; font-size: 12px;"&gt;=&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'2008-05-01'&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderid&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderheader&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;orderdate&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #434343;"&gt;@Orderdate&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: #434343;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;The option to force SQL server to use the filtered index is to make &amp;nbsp;dynamic statement &amp;nbsp;as given below.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DECLARE &lt;/span&gt;&lt;span style="color: #434343;"&gt;@Orderdate &lt;/span&gt;&lt;span style="color: black;"&gt;date&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: red;"&gt;'2008-05-01'&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DECLARE &lt;/span&gt;&lt;span style="color: #434343;"&gt;@SQL &lt;/span&gt;&lt;span style="color: blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;1000&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SET &lt;/span&gt;&lt;span style="color: #434343;"&gt;@SQL&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: red;"&gt;N'SELECT orderdate,SalesOrderid FROM SalesOrderheader WHERE&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: red;"&gt;orderdate&amp;gt;'''&lt;/span&gt;&lt;span style="color: grey;"&gt;+&lt;/span&gt;&lt;span style="color: magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: #434343;"&gt;@Orderdate &lt;/span&gt;&lt;span style="color: blue;"&gt;AS CHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;10&lt;/span&gt;&lt;span style="color: grey;"&gt;))+&lt;/span&gt;&lt;span style="color: red;"&gt;''''&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;EXEC &lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: #434343;"&gt;@SQL&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;The execution plan is given below&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-qmkKXXWTa-g/UWMO29cpZMI/AAAAAAAADtY/T1BjjKj5O04/s1600/Filtered_index__4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="116" src="http://1.bp.blogspot.com/-qmkKXXWTa-g/UWMO29cpZMI/AAAAAAAADtY/T1BjjKj5O04/s640/Filtered_index__4.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;From the execution plan it is clear that ,it is making use of the filtered index.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
If you liked this post, do like my page on &lt;a href="http://www.facebook.com/practicalSqlDba"&gt;FaceBook&lt;/a&gt;&lt;br /&gt;
&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script&gt;(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;

&lt;br /&gt;
&lt;div class="fb-like" data-font="arial" data-href="http://www.facebook.com/practicalSqlDba" data-send="true" data-show-faces="true" data-width="450"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;www.PracticalSqlDba.com&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/practicalsqldba/yuZS/~4/RUu3BJ4KLoA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.practicalsqldba.com/feeds/2477476441820741738/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.practicalsqldba.com/2013/04/sql-server-part-9-filtered-index-new.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/2477476441820741738?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/2477476441820741738?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/practicalsqldba/yuZS/~3/RUu3BJ4KLoA/sql-server-part-9-filtered-index-new.html" title="SQL Server : Part 9 : Filtered Index : A new way for Performance Improvemnt" /><author><name>Nelson John</name><uri>https://plus.google.com/101868886149088241868</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-jrulBzTAKh8/AAAAAAAAAAI/AAAAAAAAC_0/p_1c9aZUN7o/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-IXoMjvUTSnI/UWL-z3M3GdI/AAAAAAAADtA/jFt4mPpg244/s72-c/Filtered_index__1.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://www.practicalsqldba.com/2013/04/sql-server-part-9-filtered-index-new.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkINQHc7cSp7ImA9WhBXEks.&quot;"><id>tag:blogger.com,1999:blog-6097409806591916698.post-322101046607755371</id><published>2013-03-25T19:23:00.001-07:00</published><updated>2013-03-25T19:23:11.909-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-25T19:23:11.909-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Internals" /><category scheme="http://www.blogger.com/atom/ns#" term="Index" /><title>SQL Server : Part 8 : Explaining The Covering Index or Included Columns</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In our earlier &lt;/span&gt;&lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-part-4-explaining-non.html" style="font-family: Arial, Helvetica, sans-serif;"&gt;discussion &lt;/a&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;about non clustered index ,we have seen that, the leaf level of a non clustered index contain only the non clustered index key column and clustered index key (if the table is a clustered table). To fetch the remaining column from the clustered index structure or heap structure, SQL server has to&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;do a bookmark/key look up operation.Many time the bookmark or key look up operation might be costly affair. Let us see an example.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;USE &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;mydb&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DROP TABLE &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;dbo.SalesOrderDetail &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px; text-align: left;"&gt;GO &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;SELECT &lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;* &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;INTO &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;dbo.SalesOrderDetail &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;FROM &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;AdventureWorks2008.Sales.SalesOrderDetail&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;CREATE UNIQUE CLUSTERED INDEX &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;ix_SalesOrderDetail &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;ON &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;dbo.SalesOrderDetail&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;SalesOrderDetailID&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;CREATE UNIQUE NONCLUSTERED INDEX &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;ix_Productid &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;ON &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;dbo.SalesOrderDetail&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;ProductId&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;SalesOrderId&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px; text-align: left;"&gt;GO&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;SET STATISTICS &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;IO &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;ON&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;SELECT &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;SalesOrderDetailid&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;productid&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;salesorderid&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;orderqty&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;unitprice &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;FROM &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;SalesOrderDetail &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;productid&lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;=&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;707 &lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;AND&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;SalesOrderID&lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;=&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;43680&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The execution plan and the out put of IO statistics of the select statement are given below.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-88dMeOjZtuo/UVDkt9nm7XI/AAAAAAAADsM/0znHUGdzyaI/s1600/Covering+Index.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://2.bp.blogspot.com/-88dMeOjZtuo/UVDkt9nm7XI/AAAAAAAADsM/0znHUGdzyaI/s640/Covering+Index.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In the execution plan, you can see that ,50 percent of the query cost is contributed by the Key Lookup operation.In the output of the IO statistics , it clearly says SQL server&amp;nbsp;performed 5 IO operation to fetch the single record.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Note that, the existing non clustered index have 229 pages and depth is 2( levels in the b tree structure).Seek operation on this index need to perform only 2 IO operation to complete the task.You can verify this using the&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;DBCC IND &amp;nbsp;command or refer the earlier&amp;nbsp;&lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-part-4-explaining-non.html"&gt;post&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Let us assume that, this query(with different parameters ) is used very frequently from the application and you need to optimize it further.How we can do that ? The only way that we can optimize this query is by avoiding the Key lookup operation. For that we can modify our non clustered index and add the remaining two column (OrderQty and UnitPrice) which are not part of clustered index key or non clustered index key.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DROP INDEX &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;ix_Productid &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;ON &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;dbo.SalesOrderDetail&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;CREATE UNIQUE NONCLUSTERED INDEX &lt;/span&gt;&lt;span style="color: black;"&gt;ix_Productid &lt;/span&gt;&lt;span style="color: blue;"&gt;ON &lt;/span&gt;&lt;span style="color: black;"&gt;dbo.SalesOrderDetail&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;ProductId&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderId&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;OrderQty &lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;UnitPrice&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetailid&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;productid&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;salesorderid&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;orderqty&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;unitprice &lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetail &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black;"&gt;productid&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;707 &lt;/span&gt;&lt;span style="color: grey;"&gt;AND &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderID&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;43680&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-lm7iG7EbSGQ/UVDs42qxtwI/AAAAAAAADsU/hGpxpPF9o5w/s1600/Covering+Index+2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="130" src="http://3.bp.blogspot.com/-lm7iG7EbSGQ/UVDs42qxtwI/AAAAAAAADsU/hGpxpPF9o5w/s640/Covering+Index+2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now we were &amp;nbsp;able to get rid of the Key lookup operation from the execution plan and to reduce the IO from 5 to 3.But if we &amp;nbsp;look into the out put of DBCC IND of the modified non clustered index, we can see that , depth of the b tree is increased by one due to this change. As the index level is increased , the non clustered index has to to perform 3 IO to complete the operation. This will be worst, if we have more column in the select list and we added all those columns into the non clustered index key to avoid the key lookup operation.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Here comes the covering index to help us.Covering index help us to add non key column to leaf level of the non clustered index with very minimal possibility of increasing the depth of the b-tree structure. This can be&amp;nbsp;achieved by adding include column in the CREATE INDEX statement.&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: #333333; font-family: Arial, Helvetica, sans-serif; line-height: 16px;"&gt;An index that contains all information required to resolve the query is known as a Covering Index.&lt;/span&gt;&lt;span style="color: #2a2a2a; font-family: Arial, Helvetica, sans-serif; line-height: 18px; text-align: left;"&gt;When we create a nonclustered index to cover a query, we can include nonkey columns in the index definition to cover the columns in the query that are not used as primary search columns. Performance gains are achieved because the query optimizer can locate all the required column data within the index; the table or clustered index is not accessed.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DROP INDEX &lt;/span&gt;&lt;span style="color: black;"&gt;ix_Productid &lt;/span&gt;&lt;span style="color: blue;"&gt;ON &lt;/span&gt;&lt;span style="color: black;"&gt;dbo.SalesOrderDetail&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;CREATE UNIQUE NONCLUSTERED INDEX &lt;/span&gt;&lt;span style="color: black;"&gt;ix_Productid &lt;/span&gt;&lt;span style="color: blue;"&gt;ON &lt;/span&gt;&lt;span style="color: black;"&gt;dbo.SalesOrderDetail&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;ProductId&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderId&lt;/span&gt;&lt;span style="color: grey;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;include&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;OrderQty &lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;UnitPrice&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetailid&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;productid&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;salesorderid&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;orderqty&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;unitprice &lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetail&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black;"&gt;productid&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;707 &lt;/span&gt;&lt;span style="color: grey;"&gt;AND &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderID&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;43680&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/--_IQeoUqDWc/UVD3JSi6dSI/AAAAAAAADsk/yDEQv9oOoRU/s1600/Covering+Index+3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="130" src="http://2.bp.blogspot.com/--_IQeoUqDWc/UVD3JSi6dSI/AAAAAAAADsk/yDEQv9oOoRU/s640/Covering+Index+3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;With this also, we were able to get rid of the key lookup operation and to reduce the IO operation to 2. The IO operation clearly says the the depth of the clustered index is two.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;Let us see the output of the DBCC IND&lt;/span&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: black;"&gt;index_id &lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;sys.indexes &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black;"&gt;name&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: red;"&gt;'ix_Productid' &lt;/span&gt;&lt;span style="color: grey;"&gt;AND &lt;/span&gt;&lt;span style="color: magenta;"&gt;OBJECT_ID&lt;/span&gt;&lt;span style="color: blue;"&gt;= &lt;/span&gt;&lt;span style="color: magenta;"&gt;OBJECT_ID&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'SalesOrderDetail'&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black;"&gt;ind&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: red;"&gt;'SalesOrderDetail'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;2&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;&lt;span style="text-align: justify;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;This returns 378 records and the root page is&amp;nbsp;7456 (Value of pagepid column of the record having max value for indexlevel column)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Let us see the root page and one leaf level page&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;traceon&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;3604&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;span style="color: blue;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black;"&gt;page &lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;7456&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;3&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;span style="color: blue;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black;"&gt;page &lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;7328&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;3&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-MZZI0PzTFuQ/UVD8rsItKeI/AAAAAAAADss/dZ7YV51cyLQ/s1600/Covering+Index+4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="452" src="http://4.bp.blogspot.com/-MZZI0PzTFuQ/UVD8rsItKeI/AAAAAAAADss/dZ7YV51cyLQ/s640/Covering+Index+4.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
From the output we can see that, columns mentioned in the include clause are added into the leaf level pages with out making any changes in the non leaf level pages.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;Include column are useful because we can refer the column that has a data type which can not be used in the index key.More over include columns are not counted in the 900 bytes or 16 key column limitation of index keys.We can include with any data types except text,ntext and image.Included column also support the computed column.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;If you liked this post, do like my page on &lt;a href="http://www.facebook.com/practicalSqlDba"&gt;FaceBook&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script&gt;(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;

&lt;br /&gt;
&lt;div class="fb-like" data-font="arial" data-href="http://www.facebook.com/practicalSqlDba" data-send="true" data-show-faces="true" data-width="450"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;www.PracticalSqlDba.com&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/practicalsqldba/yuZS/~4/t-5xT1yjuiM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.practicalsqldba.com/feeds/322101046607755371/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.practicalsqldba.com/2013/03/sql-server-part-8-explaining-covering.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/322101046607755371?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/322101046607755371?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/practicalsqldba/yuZS/~3/t-5xT1yjuiM/sql-server-part-8-explaining-covering.html" title="SQL Server : Part 8 : Explaining The Covering Index or Included Columns" /><author><name>Nelson John</name><uri>https://plus.google.com/101868886149088241868</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-jrulBzTAKh8/AAAAAAAAAAI/AAAAAAAAC_0/p_1c9aZUN7o/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-88dMeOjZtuo/UVDkt9nm7XI/AAAAAAAADsM/0znHUGdzyaI/s72-c/Covering+Index.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.practicalsqldba.com/2013/03/sql-server-part-8-explaining-covering.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMGQXkyfip7ImA9WhBXEUo.&quot;"><id>tag:blogger.com,1999:blog-6097409806591916698.post-2231813482088402289</id><published>2013-03-24T19:27:00.000-07:00</published><updated>2013-03-24T19:27:00.796-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-24T19:27:00.796-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Internals" /><category scheme="http://www.blogger.com/atom/ns#" term="Index" /><title>SQL Server : Part 7 : Non clustered index on non unique  column </title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In our earlier &amp;nbsp;&lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-part-5-explaining-non.html"&gt;&lt;b&gt;post&lt;/b&gt;&lt;/a&gt;, we have discussed about the non clustered index, but there we were always discussing &amp;nbsp;about unique non clustered index to make the discussion simple.As we understood the general structure of the non clustered index, let us discuss the storage structure of a non clustered index on a non unique column.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In our last &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-part-6-design-consideration.html"&gt;post&lt;/a&gt;, we have discussed how SQL server manage clustered key on a non unique column.In that post we learned that SQL server add 4 bytes value to all duplicate&amp;nbsp;&lt;/span&gt;&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;occurrence of the clustered key.In the same way, non clustered index add the &amp;nbsp;cluster key in all level of the b tree to&amp;nbsp;uniquely identify the records in the next level.In the case of clustered index, the uniquifier is added only to the duplicate&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;occurrence.In the case of non clustered index , clustered key is added to all records if the uniqueness is not defined while creating the index.&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;If the non clustered index is defined as unique, SQL server adds the clustered key only to the leaf level for the bookmark look up operation .&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Let us see a sample .&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;SELECT &lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;* &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;INTO &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;dbo.SalesOrderDetail &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;FROM &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;AdventureWorks2008.Sales.SalesOrderDetail&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;CREATE UNIQUE CLUSTERED INDEX &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;ix_SalesOrderDetail &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;ON &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;dbo.SalesOrderDetail&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;SalesOrderDetailID&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;CREATE INDEX &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;Ix_ProductId &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;ON &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;SalesOrderDetail&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;ProductId&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;Salesorderid&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;A copy &amp;nbsp;of Salesorderdetail table is created with unique clustered index on SalesOrderDetailId and a non clustered index on ProductId and SalesOrderId column.Note that, while &amp;nbsp;creating the non clustered index , I have purposefully avoided the unique keywords even if the non clustered index key is unique.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black;"&gt;ind&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: red;"&gt;'SalesOrderDetail'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;4&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;DBCC IND returns 229 records and root page id is 8320. Let us see the output of DBCC page for the root page.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;page &lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;(&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;1&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;8320&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;3&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In the below figure, I have combined the output of the root page and one of the leaf level page. If you look into the root page (the first part), you can see that the cluster key (SalesOrderDetailid) is added in the root page.If you go back to our earlier &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-part-4-explaining-non.html"&gt;discussion &lt;/a&gt;on non clustered index on clustered table , you will not find the clustered key in the root level. it will be there only in the leaf level. There is no change in the leaf level page structure while defining non clustered index as &amp;nbsp;unique or non unique.&lt;/span&gt;&lt;/div&gt;
&lt;a href="http://4.bp.blogspot.com/-ycK_GKtUjl0/UU-oCzZ0WWI/AAAAAAAADr0/dYFvVkaZdbs/s1600/NonClusteredIndex+On+NonUnique+column.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" height="529" src="http://4.bp.blogspot.com/-ycK_GKtUjl0/UU-oCzZ0WWI/AAAAAAAADr0/dYFvVkaZdbs/s640/NonClusteredIndex+On+NonUnique+column.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;Let us see what will happen if the &amp;nbsp;table is on heap.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: grey;"&gt;* &lt;/span&gt;&lt;span style="color: blue;"&gt;INTO &lt;/span&gt;&lt;span style="color: black;"&gt;dbo.SalesOrderDetailHeap &lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;AdventureWorks2008.Sales.SalesOrderDetail&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;CREATE INDEX &lt;/span&gt;&lt;span style="color: black;"&gt;Ix_ProductId &lt;/span&gt;&lt;span style="color: blue;"&gt;ON &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetailHeap &lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;ProductId&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;Salesorderid&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: black;"&gt;index_id &lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;sys.indexes &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black;"&gt;name&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: red;"&gt;'Ix_ProductId' &lt;/span&gt;&lt;span style="color: grey;"&gt;AND&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: magenta;"&gt;OBJECT_NAME&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: magenta;"&gt;OBJECT_ID&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: red;"&gt;'SalesOrderDetailHeap'&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black;"&gt;ind&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: red;"&gt;'SalesOrderDetailHeap'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;2&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black;"&gt;page &lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;5352&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;3&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In the below figure, I have combined the output of the root page and one leaf level page.In the root page you can notice that Heap RID is added. If you go back our earlier &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-part-5-explaining-non.html"&gt;discussion &lt;/a&gt;on non clustered index on heap, we can see the Heap RID only on the leaf level not in the root page. There is no change in the leaf level page structure while defining non clustered index as  unique or non unique.&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-_gG4M5_p5Xg/UU-sxMazBOI/AAAAAAAADr8/uqY4NJn9vK4/s1600/NonClusteredIndex+On+NonUnique+column+1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="530" src="http://2.bp.blogspot.com/-_gG4M5_p5Xg/UU-sxMazBOI/AAAAAAAADr8/uqY4NJn9vK4/s640/NonClusteredIndex+On+NonUnique+column+1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: grey; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="text-align: justify;"&gt;You might have noticed that ,in our above example, even if the non clustered key is unique , SQL server considered it as non unique as we did not mentioned the uniqueness while creating the non clustered index. Adding the clustered key (or  HEAP RID) in to all level of index might lead to increase the level of index (more IO) depends on the size of the clustered key.So it is important to consider the uniqueness of column while defining the non clustered index key in all possible situation.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;If you liked this post, do like my page on &lt;a href="http://www.facebook.com/practicalSqlDba"&gt;FaceBook&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script&gt;(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;

&lt;br /&gt;
&lt;div class="fb-like" data-font="arial" data-href="http://www.facebook.com/practicalSqlDba" data-send="true" data-show-faces="true" data-width="450"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;www.PracticalSqlDba.com&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/practicalsqldba/yuZS/~4/WutYIcJPQX0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.practicalsqldba.com/feeds/2231813482088402289/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.practicalsqldba.com/2013/03/sql-server-part-7-non-clustered-index.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/2231813482088402289?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/2231813482088402289?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/practicalsqldba/yuZS/~3/WutYIcJPQX0/sql-server-part-7-non-clustered-index.html" title="SQL Server : Part 7 : Non clustered index on non unique  column " /><author><name>Nelson John</name><uri>https://plus.google.com/101868886149088241868</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-jrulBzTAKh8/AAAAAAAAAAI/AAAAAAAAC_0/p_1c9aZUN7o/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-ycK_GKtUjl0/UU-oCzZ0WWI/AAAAAAAADr0/dYFvVkaZdbs/s72-c/NonClusteredIndex+On+NonUnique+column.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.practicalsqldba.com/2013/03/sql-server-part-7-non-clustered-index.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMMQn85fCp7ImA9WhBXEUo.&quot;"><id>tag:blogger.com,1999:blog-6097409806591916698.post-1437824352609262351</id><published>2013-03-21T18:42:00.002-07:00</published><updated>2013-03-24T17:48:03.124-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-24T17:48:03.124-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Index Fragmentation" /><category scheme="http://www.blogger.com/atom/ns#" term="Index" /><title>SQL Server : Part 6 : Design consideration of Clustered Index</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In our earlier &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-explaining-clustered-table.html"&gt;post&lt;/a&gt;,&amp;nbsp;we have discussed about the structure and storage of clustered index. In this post we will discuss about the design consideration of clustered index.There are couple of points that need to be considered while selecting clustered index key.There is no hard rule in selecting the clustering key . It is best practices and guidelines and the internal knowledge will help us to select right clustering key.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Uniqueness&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;SQL server will allow you to create a clustered index on non unique column, but uniqueness is one of the most desirable attribute for any indexes especially for a clustered index.Even if SQL server allow to create clustered index on a non unique column , internally SQL server add 4 bytes value for all duplicate instance of clustered key and this 4 bytes variable length column is known as uniquiifier .In this case SQL server consider the clustered key as the combination of non unique column on which clustered index is defined and internally generated uniquifier column.This value will be stored where ever the clustered key to be stored. For example in the leaf level of a non clustered index defined on a clustered table.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Let us see an example.I am going to create a copy of SalesOrderDetail table and define clustered index on the productid column which has duplicate values.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;Use&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: 12px; text-align: left;"&gt;MyDb&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;SELECT &lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;* &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;INTO &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;dbo.SalesOrderDetailDupCI &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;FROM &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;AdventureWorks2008.Sales.SalesOrderDetail&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;CREATE CLUSTERED INDEX &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;ix_SalesOrderDetailDupCI &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;ON &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;dbo.SalesOrderDetailDupCI&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;ProductId&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now let us run the DBCC IND command&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;IND&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: red; font-size: 12px; text-align: left;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: red; font-size: 12px; text-align: left;"&gt;'SalesOrderDetailDupCI'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;1&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;This returns me 1608 pages and &amp;nbsp;the root page number is 3570(The value of PagePID column of the record having highest value for indexlevel column ) . &amp;nbsp;Below is the output of DBCC Page command for the root page and one intermediate page&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/-I6MaHh_n8SU/UUuQfDImZ0I/AAAAAAAADrU/qaz51g8qzs0/s1600/Clustered+index+Design+Consideration+1.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" height="426" src="http://3.bp.blogspot.com/-I6MaHh_n8SU/UUuQfDImZ0I/AAAAAAAADrU/qaz51g8qzs0/s640/Clustered+index+Design+Consideration+1.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In the output, we can see one additional column called UNIQUIFIER which we did not seen when we created a unique clustered index in earlier post. When a clustered index created on a non unique column , SQL server add 4 bytes random value for all duplicate&amp;nbsp;occurrence of clustered key. It will not generate the uniquifier value for the first occurrence. That is the reason there are 0 for uniquifier column for some records. So clustered key defined on the non unique column has an overhead of generating the uniquifier value and also widen the cluster index key.In our example we defined clustered index on a 4 bytes column but actual clustered key size become 8 bytes due to uniquifier.This combination has to replicated to leaf level of all non clustered index .The magnitude of the issue will increase when there is non clustered index &amp;nbsp;defined on non unique column where this clustered index value need to be stored in the non leaf level pages also.(We will discuss about non clustered index on non unique column in later post).&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;If your table does not have a single unique key to define clustered index, try to make it unique by adding one or two narrow column to the clustering key. That will avoid the overhead of adding the uniquifier and reduce the bookmark look up operation as the non leaf level of non clustered index has more columns (The additional column added to clustered key to make it unique)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Static&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Another desired property of the clustered index key is to be a Static. when we define clustered index on a non static column , that makes the update statement(updating the clustered index key) &amp;nbsp;more costly as it has to move the record into different page &amp;nbsp;to make sure the data is stored in the logical order of clustered index and leaf level of all non clustered index need to be updated. Let us see a sample&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue; font-family: monospace; font-size: 12px; text-align: left;"&gt;set statistics io on&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: monospace; font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: green;"&gt;--Unique clustered index on SalesOrderDetailId&lt;/span&gt;&lt;span style="color: blue;"&gt;UPDATE &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetail_StaticIndex &lt;/span&gt;&lt;span style="color: blue;"&gt;SET &lt;/span&gt;&lt;span style="color: black;"&gt;ProductID &lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;99 &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black;"&gt;ProductID&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;707&lt;br /&gt;GO&lt;/span&gt;&lt;span style="color: green;"&gt;--Nonunique clustered index on ProductId&lt;/span&gt;&lt;span style="color: blue;"&gt;UPDATE &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetail &lt;/span&gt;&lt;span style="color: blue;"&gt;SET &lt;/span&gt;&lt;span style="color: black;"&gt;ProductID &lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;99 &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black;"&gt;ProductID&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;707&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In the below output you can see a huge change in IO for the second update statement.&lt;/span&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;a href="http://4.bp.blogspot.com/-0bE37NgNnLk/UUufsHeFQtI/AAAAAAAADrk/0QG8QX0QjvA/s1600/Clustered_index_Design_Consideration_2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="78" src="http://4.bp.blogspot.com/-0bE37NgNnLk/UUufsHeFQtI/AAAAAAAADrk/0QG8QX0QjvA/s640/Clustered_index_Design_Consideration_2.png" width="640" /&gt;&lt;/a&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Even in small table (Customer_id,Firstname.lastname) on which clustered index defined on a non static column (Lastname) and which has one non clustered index, any change in the clustered index key need to make changes in minimum of two pages.One data page and one leaf level page of non clustered index.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Size of the clustered index key&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Size of the clustered index refers to the number of bytes requires to store the clustered index key.As the size of the clustered index increases, more IO required to fetch the records.This is happening because an index page can store lesser index row if the clustered index is wider. That increase number of pages in the intermediate level and depth of the indexes (Levels in the b tree structure) .For example, a table which contain millions of records might need only 3 level in b tree structure if the clustered index in defined on integer column. If we defined clustered index on wider column (say a uniqueidentifier column which need 16 bytes), the depth of index might increase to 4 (Level of index). Any clustered index seek requires 4 IO operation compared to 3( if the clustered index is narrow).&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;This issue propagate to non clustered index also as the clustered index keys are stored in the leaf level of all non clustered index as a pointer to the clustered index. If the non clustered index is defined on the non unique column , the clustered key need to be stored in non leaf level pages of &amp;nbsp;the non clustered index . Which again might cause for more page in intermediate level and to increase the depth of the in non clustered index which in turn increase the IO operation in non clustered index seek/scan also. As the clustered index depth is increased to 4, each bookmark look up operation also need to do 4 IO operation.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Sequential&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;It is a best practice to define clustered index on a ever increasing(sequential) column. That is the reason we can commonly seen clustered index defined on identity column. Clustered index defined on a &amp;nbsp;non sequential column cause for &lt;a href="http://www.practicalsqldba.com/2012/04/sql-server-index-fragmentation.html"&gt;fragmentation&amp;nbsp;&lt;/a&gt;. To read more on fragmentation refer this &lt;a href="http://www.practicalsqldba.com/search/label/Index%20Fragmentation"&gt;posts&lt;/a&gt;&amp;nbsp;. A non sequential clustered index key force the SQL server to insert record in between to maintain the logical ordering of the data.This lead to page split which cause for external fragmentation and internal fragmentation.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Conclusion&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;We have discussed about the desired qualities of the clustered index key and the reason behind that.&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The above points that we discussed are general best practices to be considered while deciding the clustered index key.&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Apart from this, data access pattern also influence in deciding the clustered index key.If we do not have complete understand of the data access pattern , we might need to test the performance with different strategies.&lt;/span&gt;&lt;span style="font-size: 12px; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
If you liked this post, do like my page on &lt;a href="http://www.facebook.com/practicalSqlDba"&gt;FaceBook&lt;/a&gt;&lt;br /&gt;
&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script&gt;(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;

&lt;br /&gt;
&lt;div class="fb-like" data-font="arial" data-href="http://www.facebook.com/practicalSqlDba" data-send="true" data-show-faces="true" data-width="450"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;www.PracticalSqlDba.com&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/practicalsqldba/yuZS/~4/jSR1k47VP88" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.practicalsqldba.com/feeds/1437824352609262351/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.practicalsqldba.com/2013/03/sql-server-part-6-design-consideration.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/1437824352609262351?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/1437824352609262351?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/practicalsqldba/yuZS/~3/jSR1k47VP88/sql-server-part-6-design-consideration.html" title="SQL Server : Part 6 : Design consideration of Clustered Index" /><author><name>Nelson John</name><uri>https://plus.google.com/101868886149088241868</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-jrulBzTAKh8/AAAAAAAAAAI/AAAAAAAAC_0/p_1c9aZUN7o/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-I6MaHh_n8SU/UUuQfDImZ0I/AAAAAAAADrU/qaz51g8qzs0/s72-c/Clustered+index+Design+Consideration+1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.practicalsqldba.com/2013/03/sql-server-part-6-design-consideration.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMAR38_cSp7ImA9WhBQF0k.&quot;"><id>tag:blogger.com,1999:blog-6097409806591916698.post-8812668180614982032</id><published>2013-03-17T09:12:00.001-07:00</published><updated>2013-03-19T17:47:26.149-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-19T17:47:26.149-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Internals" /><category scheme="http://www.blogger.com/atom/ns#" term="Index" /><title>SQL Server : Part 5 : Explaining Non clustered Index on Heap</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In the last &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-part-4-explaining-non.html"&gt;&lt;b&gt;post&lt;/b&gt;&lt;/a&gt;, we have discussed about non clustered index on a clustered table.In this post we will discuss about the non clustered index on a heap table.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Non clustered index can be created on clustered table as well as heap table.While creating a non clustered index on clustered table , clustered index key will act as a row pointer. In heap table ,the combination of file id , page number and slot number will act as a row pointer in the non &amp;nbsp;clustered index.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Let us see a hands on example. We will create a copy of salesorderdetail table with a non clustered index on productid and salesorderid columns&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: grey;"&gt;* &lt;/span&gt;&lt;span style="color: blue;"&gt;INTO &lt;/span&gt;&lt;span style="color: black;"&gt;dbo.SalesOrderDetailHeap &lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;AdventureWorks2008.Sales.SalesOrderDetail&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;CREATE UNIQUE INDEX &lt;/span&gt;&lt;span style="color: black;"&gt;Ix_ProductId &lt;/span&gt;&lt;span style="color: blue;"&gt;ON &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetailHeap&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;ProductId&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;Salesorderid&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;A pictorial representation of the b tree structure is given below&lt;/span&gt;&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-IAnV7K9svLo/UUkGcORjPSI/AAAAAAAADrE/lbxqRhm1GCw/s1600/Non_Clustered_Index_Heap_5.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img alt="Non clustered Index on heap Structure " border="0" height="344" src="http://2.bp.blogspot.com/-IAnV7K9svLo/UUkGcORjPSI/AAAAAAAADrE/lbxqRhm1GCw/s640/Non_Clustered_Index_Heap_5.png" title="Non clustered Index on heap Structure " width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;Let us run the DBCC IND command to find the root page of the index.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black;"&gt;ind&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: red;"&gt;'SalesOrderDetailHeap'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;2&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;This statement returns 289 records with 1 as maximum value in the indexlevel column. That means the index structure required one page in root node , 287 pages in leaf level and one page for IAM chain.The page number of record, having maximum value for indexlevel column&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;(root page)&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;is 1656. Let us see the root page.&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;traceon&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;3604&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;PAGE &lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: red; font-size: 12px; text-align: left;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;1&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;1656&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;3&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
Below we can see a part of the output of DBCC page command. The structure of the output is same as the structure of root page of non clustered index on clustered table.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-bMl9roQRTFE/UUSc3vI5qBI/AAAAAAAADp8/f-nIg2dZdZE/s1600/Non_Clustered_Index_Heap_1.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="353" src="http://1.bp.blogspot.com/-bMl9roQRTFE/UUSc3vI5qBI/AAAAAAAADp8/f-nIg2dZdZE/s640/Non_Clustered_Index_Heap_1.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now let us move to the page 1497 which is a leaf level page.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;traceon&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;3604&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;PAGE&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: red; font-size: 12px; text-align: left;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;1&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;1497&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;3&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-t8U4NU0ZvCg/UUU1_NV5qFI/AAAAAAAADqM/jYZB-9ryJqU/s1600/Non_Clustered_Index_Heap_2.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="314" src="http://3.bp.blogspot.com/-t8U4NU0ZvCg/UUU1_NV5qFI/AAAAAAAADqM/jYZB-9ryJqU/s640/Non_Clustered_Index_Heap_2.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;In the leaf level of non clustered index on clustered table , we have noticed that , clustered key is added to leaf level pages along with nonclustered key.Here we do not have a clustered index. So SQL server added row identifier (8 bytes in size) which is a combination of fileid (2 bytes) ,pageid(4 bytes) and slot number(2 bytes). The row identifier can be found in the &amp;nbsp;HeapRID column of Fig 2. From the above figure, it is clear that, the complete information of the record with productid=707 and salesorderid =49464 can be found at the location HeapRID&amp;nbsp;0x6813000001000600. Below query will help us to split the RID into FileId:PageId:SlotNo format&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DECLARE &lt;/span&gt;&lt;span style="color: #434343; font-size: 12px; text-align: left;"&gt;@HeapRid &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;BINARY&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;8&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SET &lt;/span&gt;&lt;span style="color: #434343;"&gt;@HeapRid &lt;/span&gt;&lt;span style="color: blue;"&gt;= &lt;/span&gt;&lt;span style="color: black;"&gt;0x6813000001000600&lt;/span&gt;&lt;span style="color: blue;"&gt;SELECT &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: magenta;"&gt;CONVERT &lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;5&lt;/span&gt;&lt;span style="color: grey;"&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: magenta;"&gt;CONVERT&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;INT&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: #434343;"&gt;@HeapRid&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;6&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + &lt;/span&gt;&lt;span style="color: magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: #434343;"&gt;@HeapRid&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;5&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;)))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + &lt;/span&gt;&lt;span style="color: red;"&gt;':'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: grey;"&gt;+ &lt;/span&gt;&lt;span style="color: magenta;"&gt;CONVERT&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;10&lt;/span&gt;&lt;span style="color: grey;"&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: magenta;"&gt;CONVERT&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;INT&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: #434343;"&gt;@HeapRid&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;4&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + &lt;/span&gt;&lt;span style="color: magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: #434343;"&gt;@HeapRid&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;3&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + &lt;/span&gt;&lt;span style="color: magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: #434343;"&gt;@HeapRid&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;2&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + &lt;/span&gt;&lt;span style="color: magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: #434343;"&gt;@HeapRid&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;)))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + &lt;/span&gt;&lt;span style="color: red;"&gt;':'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;+ &lt;/span&gt;&lt;span style="color: magenta;"&gt;CONVERT&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;5&lt;/span&gt;&lt;span style="color: grey;"&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: magenta;"&gt;CONVERT&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;INT&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: #434343;"&gt;@HeapRid&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;8&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + &lt;/span&gt;&lt;span style="color: magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: #434343;"&gt;@HeapRid&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;7&lt;/span&gt;&lt;span style="color: grey;"&gt;, &lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;)))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;AS &lt;/span&gt;&lt;span style="color: red;"&gt;'Fileid:Pageid:slot'&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;The output of the query is&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;1:4968:6 which says File id =1, Pageid =4968 and slot no=6. Let us see the page number 4968&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;traceon&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;3604&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;PAGE&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: red; font-size: 12px; text-align: left;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;1&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;4968&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;3&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-9Sp_MF9LoRk/UUVuOrfbY_I/AAAAAAAADqc/vcbndM-EekE/s1600/Non_Clustered_Index_Heap_3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-9Sp_MF9LoRk/UUVuOrfbY_I/AAAAAAAADqc/vcbndM-EekE/s640/Non_Clustered_Index_Heap_3.png" width="540" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/-9Sp_MF9LoRk/UUVuOrfbY_I/AAAAAAAADqc/vcbndM-EekE/s1600/Non_Clustered_Index_Heap_3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/-9Sp_MF9LoRk/UUVuOrfbY_I/AAAAAAAADqc/vcbndM-EekE/s1600/Non_Clustered_Index_Heap_3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/-9Sp_MF9LoRk/UUVuOrfbY_I/AAAAAAAADqc/vcbndM-EekE/s1600/Non_Clustered_Index_Heap_3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/-9Sp_MF9LoRk/UUVuOrfbY_I/AAAAAAAADqc/vcbndM-EekE/s1600/Non_Clustered_Index_Heap_3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/-9Sp_MF9LoRk/UUVuOrfbY_I/AAAAAAAADqc/vcbndM-EekE/s1600/Non_Clustered_Index_Heap_3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/-9Sp_MF9LoRk/UUVuOrfbY_I/AAAAAAAADqc/vcbndM-EekE/s1600/Non_Clustered_Index_Heap_3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;In the output, you can see all columns &amp;nbsp;of record having productid=707 and &amp;nbsp;salesordeid = 49464 at slot number 6.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;Let us consider &amp;nbsp;the below query and analyse how SQL sever fetch the data.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;SET STATISTICS&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: 12px;"&gt;IO&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-size: 12px;"&gt;ON&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;code style="background-color: white; color: #222222; font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="background-color: white; color: #222222; font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;*&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetail&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;productid&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;707&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;AND&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderid&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: 12px;"&gt;49464&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-family: monospace;"&gt;&lt;span style="font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;SQL Server &amp;nbsp;has to do two I/O operation to reach the leaf level of non clustered index and one I/O operation to fetch the remaining data using Heap RID from the heap structure.The execution plan of the query is given below&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-qkR38AdQ8C8/UUVyHhblJEI/AAAAAAAADqs/j7_55Fn3tpg/s1600/Non_Clustered_Index_Heap_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="244" src="http://2.bp.blogspot.com/-qkR38AdQ8C8/UUVyHhblJEI/AAAAAAAADqs/j7_55Fn3tpg/s640/Non_Clustered_Index_Heap_4.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Even if we make changes in the query to fetch only the ProductId,SalesOrderid and SalesorderDetaildId columns, still SQL sever need to do Key lookup operation. This is because SalesOrderDetailid is not declared as clustered  key and not available in the leaf level of the nonclustered index. To avoid the key lookup operation, we need to limit the select columns only to  the non clustered key(ProductKey ,salesorderid).&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;If you liked this post, do like my page on &lt;a href="http://www.facebook.com/practicalSqlDba"&gt;FaceBook&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script&gt;(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;

&lt;br /&gt;
&lt;div class="fb-like" data-font="arial" data-href="http://www.facebook.com/practicalSqlDba" data-send="true" data-show-faces="true" data-width="450"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;www.PracticalSqlDba.com&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/practicalsqldba/yuZS/~4/avlpuVLOfMo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.practicalsqldba.com/feeds/8812668180614982032/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.practicalsqldba.com/2013/03/sql-server-part-5-explaining-non.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/8812668180614982032?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/8812668180614982032?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/practicalsqldba/yuZS/~3/avlpuVLOfMo/sql-server-part-5-explaining-non.html" title="SQL Server : Part 5 : Explaining Non clustered Index on Heap" /><author><name>Nelson John</name><uri>https://plus.google.com/101868886149088241868</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-jrulBzTAKh8/AAAAAAAAAAI/AAAAAAAAC_0/p_1c9aZUN7o/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-IAnV7K9svLo/UUkGcORjPSI/AAAAAAAADrE/lbxqRhm1GCw/s72-c/Non_Clustered_Index_Heap_5.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.practicalsqldba.com/2013/03/sql-server-part-5-explaining-non.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YGRXc6eSp7ImA9WhBQF04.&quot;"><id>tag:blogger.com,1999:blog-6097409806591916698.post-6121563951742963353</id><published>2013-03-14T18:37:00.000-07:00</published><updated>2013-03-19T17:25:24.911-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-19T17:25:24.911-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Internals" /><category scheme="http://www.blogger.com/atom/ns#" term="Index" /><title>SQL Server : Part 4 :Explaining the Non Clustered Index Structure </title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;A table can have only one clustered index as the data rows are stored in the order of the clustered key, but a table can have multiple non clustered indexes.We have discussed about clustered index structure in our earlier &lt;b&gt;&lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-explaining-clustered-table.html"&gt;post&lt;/a&gt;&amp;nbsp;&lt;/b&gt;. In this post let us try to understand the non clustered index structure.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;Logical Representation of Non Clustered index&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In a simple word , a non clustered index is a subset of a table. When we define a non clustered index, SQL server store the set of non clustered key in a different pages.Let us consider a table with four columns (PersonId(PK),PersonType,FirstName,LastName) and a non clustered index on that table.The actual table is stored in the order of personid column (Cluster index key).&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In the below figure will give you a pictorial representation of non clustered index. The non clustered index key column are stored &amp;nbsp;apart from the actual table.If you look into the Non clustered index ,you can notice that, records are stored in the order of Firstname and lastname (Non Clustered index key) not as in the order of actual table.To understand easily , non clustered index can be considered as subset table of actual one.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-uMpZ0HkfNZk/UUEKzbOoe1I/AAAAAAAADoo/USnch7SAruw/s1600/Non+Clustered+Index+1.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-uMpZ0HkfNZk/UUEKzbOoe1I/AAAAAAAADoo/USnch7SAruw/s400/Non+Clustered+Index+1.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now let us assume that we have a task to find out all records whose first name is '&lt;i&gt;Michael'&lt;/i&gt;.If you tried to find out from the Actual table , we need to go through each record from top to bottom to check&amp;nbsp;whether first name matches with our search string '&lt;i&gt;Michael&lt;/i&gt;' as the records are not ordered based on the firstname column. It will be more&amp;nbsp;tedious task if we have thousands of records in that table. The task will be much easier if we look into the the Non Clustered index side&amp;nbsp;as the first name and last name are&amp;nbsp;alphabetically ordered.We can easily locate the records which has firstname as '&lt;i&gt;Michael&lt;/i&gt;' and we do not need go beyond that as we are sure that there will not&amp;nbsp;be any more records with firstname as '&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;Michael&lt;/i&gt;'.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now we know Firstname and lastname of the record. How do we get the values for other two column ? Let us make a change in the Non clustered index part by associating the PersonId column along with the non clustered index.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-cGxdpDmEmJI/UUEWqoOcR5I/AAAAAAAADo0/LaC3xCPiC5E/s1600/Non+Clustered+Index+1.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="352" src="http://1.bp.blogspot.com/-cGxdpDmEmJI/UUEWqoOcR5I/AAAAAAAADo0/LaC3xCPiC5E/s640/Non+Clustered+Index+1.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now, once we locate the records , we can go back to the Actual Table using the PersonId (Cluster index key) to find the values of other columns and this operation is called bookmark lookups or RID lookup.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;Clustered index v/s Non clustered index&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Non clustered indexes have the same B-tree structure as clustered indexes.The non clustered &amp;nbsp;index key will not make any change in the sort order of underlying table where as clustered index force the SQL server to store the underlying table in the order of cluster index key. The leaf level of clustered index are made up of data pages which contain the actual data of table where as the leaf level of non clustered index are made up of index pages.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Non clustered index can be defined on a &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-index-part-2-structure-of.html"&gt;heap &lt;/a&gt;table or &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-explaining-clustered-table.html"&gt;clustered table&lt;/a&gt;.In the leaf level of nonclusterd index, each index row contain the nonclustered key value and a row locator.This locator point to a the data row in the clustered index or heap.The row locator in nonclusterd index rows are either a pointer to a row or a clustered index key for a row. If the table is a heap, which means it does not have a clustered index,the row locator is a pointer to the row.The pointer is built from the file identifier ,page number and slot number of the row on the page. The whole pointer is known as a Row ID(RID). If the table has a clustered index, the row locator is the clustered index key for the row.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;Hand on&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Let us create a unique non clustered index on the salesorderdetails table that we were working on the clustered index &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-explaining-clustered-table.html"&gt;post&lt;/a&gt;. The table has a unique clustered index on salesorderdetailid column. Now we are defining a non clustered index using the below statement&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;CREATE UNIQUE INDEX &lt;/span&gt;&lt;span style="color: black;"&gt;Ix_ProductId&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;ON &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetail&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;ProductId&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;Salesorderid&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;A pictorial representation of the b-tree structure is given below&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-KAeNpyifqG8/UUkBUdduOYI/AAAAAAAADq8/IXmtGmXYmVM/s1600/Non_Clustered_Index_7.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="Clustered Index Structure" border="0" height="344" src="http://4.bp.blogspot.com/-KAeNpyifqG8/UUkBUdduOYI/AAAAAAAADq8/IXmtGmXYmVM/s640/Non_Clustered_Index_7.png" title="Clustered Index Structure" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;Now let us see how SQL server store the index. Let us see the output of DBCC IND command&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;IND&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;(&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'SalesOrderDetail'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;2&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The last parameter, 2 is the index id of the index&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: monospace; font-size: 12px; text-align: left;"&gt;Ix_ProductId. &lt;/span&gt;&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;For the usage of DBCC IND refer this &lt;a href="http://www.practicalsqldba.com/2012/08/sql-server-understanding-data-page.html"&gt;post&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The output returns me 229 records which include one IAM page and 228 index page.From this we can find the root page id by locating the record having highest value for &amp;nbsp;IndexLevel column. Remember that index level increase from leaf level to root. In this case, the root level page id is 4688 with index level 1. That means, the b-tree structure of this index has only root and leaf level &amp;nbsp;.There is no &amp;nbsp;intermediate level &amp;nbsp;in the b tree structure of this non clustered index. Let us see the page 4688.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;traceon&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;3604&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;GO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;page&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;(&lt;/span&gt;&lt;span style="color: red; font-family: monospace; font-size: 12px;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;1&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;4688&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;3&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;This returns the 228 records (228 leaf level index pages) .Part of the output is shown below.&lt;/span&gt;&lt;/span&gt;&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The output looks same as the clustered index root/intermediate page structure. The output can be read as , all the records where the combination of &amp;nbsp;productid,salesorderid is less than or equal to (707,51151) can be found in child page 2288. All the records where the combination&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;of &amp;nbsp;productid,salesorderid is between (707,51151) &amp;nbsp;and (707,55920) can be found in the child page 2289 and so on.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-SWTka2fFbbM/UUJf6eZZm2I/AAAAAAAADpE/IPTZcGeWL8E/s1600/Non_Clustered_Index_2.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="297" src="http://1.bp.blogspot.com/-SWTka2fFbbM/UUJf6eZZm2I/AAAAAAAADpE/IPTZcGeWL8E/s640/Non_Clustered_Index_2.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 3&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: monospace; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" trbidi="on"&gt;
Let us see the page 2289&lt;/div&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="font-family: 'Times New Roman'; font-size: medium; text-align: justify;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="text-align: left;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;traceon&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;3604&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman'; font-size: medium; text-align: justify;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="text-align: left;"&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;GO&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman'; font-size: medium; text-align: justify;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="text-align: left;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;page&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;(&lt;/span&gt;&lt;span style="color: red; font-family: monospace; font-size: 12px;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;1&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;2289&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;3&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;code&gt;&lt;span style="text-align: left;"&gt;&lt;span style="color: grey; font-family: Arial, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;This returns 539 records, all with product id 707.As this index use only two level, this is the leaf level of the b tree structure. Here you can notice that, there is no child page id but we have the value of the salesorderdetailid column (Clustered index key) which SQL server use do key or bookmark look up operation.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="text-align: left;"&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-nrZs5M9g3RA/UUJikFv7vCI/AAAAAAAADpM/UBbBTvjj-9g/s1600/Non_Clustered_Index_3.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="356" src="http://1.bp.blogspot.com/-nrZs5M9g3RA/UUJikFv7vCI/AAAAAAAADpM/UBbBTvjj-9g/s640/Non_Clustered_Index_3.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 4&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman'; font-size: medium; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman'; text-align: justify;"&gt;
&lt;code&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;Let us see, how SQL server perform a select operation using this index.&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman'; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SET STATISTICS &lt;/span&gt;&lt;span style="color: black;"&gt;IO &lt;/span&gt;&lt;span style="color: blue;"&gt;ON&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: grey;"&gt;*&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetail &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black;"&gt;productid&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;707 &lt;/span&gt;&lt;span style="color: grey;"&gt;AND &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderid&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;51192&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;The execution plan will looks like below.You can see the Key lookup operation in the execution plan.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-EncfQJXMaIY/UUJlfV3evwI/AAAAAAAADpU/tVdSLVZoC70/s1600/Non_Clustered_Index_4.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="216" src="http://1.bp.blogspot.com/-EncfQJXMaIY/UUJlfV3evwI/AAAAAAAADpU/tVdSLVZoC70/s640/Non_Clustered_Index_4.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 5&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;As the where condition exactly match with our non clustered index definition, SQL sever use that index to execute this query.As a first step SQL server reads the root page of b tree structure.The combination of our search criteria (707,51192) falls in to the second records (Refer Fig 3). So SQL server goes to the child page (Page id 2289).In that page, we can locate the record with the exact combination of (707,51192) with salesorderdetailid 37793. From here, &lt;code&gt;&lt;span style="font-size: small;"&gt;SQL server do a key look up operation using the&amp;nbsp;&lt;/span&gt;&lt;/code&gt;salesorderdetailid value. From the earlier &lt;a href="http://salesorderdetailid/"&gt;post &lt;/a&gt;about clustered index, we know that , SQL server need to perform 3 I/O operation while searching on any clustered index key. So to complete this query, SQL server needs to do 5 &amp;nbsp;I/O operation (2 in non clustered index and 3 for bookmark/key lookup operation in the clustered index) &amp;nbsp;and that is the same you can find in the output of IO statistics.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;To understand it better,let us consider non clustered index as subset table ( let us say table name Saleorderdetail_NC) of salesorderdetail table with columns productid,salesorderid and SalesorderDetailid and having&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;combination&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;ProductId and salesorderid &amp;nbsp;as clustered index.Then the result of the above query can &amp;nbsp;be obtained by combining the output of below two query.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;*&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetail_nc&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;productid&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;707&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;AND&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderid&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;51192&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman'; font-size: medium;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;*&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetail&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetailid&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;37793&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;As a last part let us see one more query&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;*&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetail&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;span style="color: black;"&gt;productid&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;707&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;This query returns 3083 records and the search condition is matching with the non clustered index first column. Still SQL server will not use the non clustered index to execute the query. Please find below the execution plan of this query.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-e6ZahhJ6oQU/UUJwXwJUehI/AAAAAAAADpc/iOCoz80wQeo/s1600/Non_Clustered_Index_5.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="123" src="http://3.bp.blogspot.com/-e6ZahhJ6oQU/UUJwXwJUehI/AAAAAAAADpc/iOCoz80wQeo/s400/Non_Clustered_Index_5.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 6&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The reason behind that, if it use the non clustered index, it has to do a key lookup operation for 3083 records . That itself requires &amp;nbsp;(3083X3) &amp;nbsp;9249 I/O operation . Instead of that, SQL sever can fetch the output by performing clustered index scan which need only 1501(Total number of pages required for clustered index b-tree structure) I/O operation.If we make slight changes in the query to select only Productid ,SalesOrderDetailid and SalesOrderId, SQL server use the non clustered index as it does not need to do the key lookup operation. The leaf level of the non clustered index have the values of these three column . Please find below the execution plan.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;code style="font-size: 12px; text-align: left;"&gt;&lt;span style="color: blue;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;productid,salesorderdetailid,salesorderid &amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetail&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px; text-align: left;"&gt;productid&lt;/span&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px; text-align: left;"&gt;=&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px; text-align: left;"&gt;707&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="color: black; font-family: monospace; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-UaqjMJkIzgk/UUJytfcZoxI/AAAAAAAADps/0qDSibHasqM/s1600/Non_Clustered_Index_6.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="116" src="http://2.bp.blogspot.com/-UaqjMJkIzgk/UUJytfcZoxI/AAAAAAAADps/0qDSibHasqM/s400/Non_Clustered_Index_6.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;FIg 7&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="color: black; font-family: monospace; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;I know this was a bit lengthy post, but still I feel it will give you the clear picture of the non clustered index structure.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
If you liked this post, do like my page on &lt;a href="http://www.facebook.com/practicalSqlDba"&gt;FaceBook&lt;/a&gt;&lt;br /&gt;
&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script&gt;(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;

&lt;br /&gt;
&lt;div class="fb-like" data-font="arial" data-href="http://www.facebook.com/practicalSqlDba" data-send="true" data-show-faces="true" data-width="450"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;www.PracticalSqlDba.com&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/practicalsqldba/yuZS/~4/FIdwmKzKl6k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.practicalsqldba.com/feeds/6121563951742963353/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.practicalsqldba.com/2013/03/sql-server-part-4-explaining-non.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/6121563951742963353?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/6121563951742963353?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/practicalsqldba/yuZS/~3/FIdwmKzKl6k/sql-server-part-4-explaining-non.html" title="SQL Server : Part 4 :Explaining the Non Clustered Index Structure " /><author><name>Nelson John</name><uri>https://plus.google.com/101868886149088241868</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-jrulBzTAKh8/AAAAAAAAAAI/AAAAAAAAC_0/p_1c9aZUN7o/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-uMpZ0HkfNZk/UUEKzbOoe1I/AAAAAAAADoo/USnch7SAruw/s72-c/Non+Clustered+Index+1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.practicalsqldba.com/2013/03/sql-server-part-4-explaining-non.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIGQXs8fCp7ImA9WhBQFUs.&quot;"><id>tag:blogger.com,1999:blog-6097409806591916698.post-6309283524008805148</id><published>2013-03-12T18:02:00.001-07:00</published><updated>2013-03-17T18:02:00.574-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-17T18:02:00.574-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Internals" /><category scheme="http://www.blogger.com/atom/ns#" term="Index" /><title>SQL Server : Index Part 3 :Explaining the Clustered Table Structure</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In SQL server, there are two types of table based on the storage.A table with clustered index is called Clustered Table and a table with out a clustered index is called Heap Table. In earlier &lt;a href="http://www.practicalsqldba.com/2013/03/sql-server-index-part-2-structure-of.html"&gt;post&lt;/a&gt;, we have discussed about the&amp;nbsp;&lt;/span&gt;&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;specialty and the storage structure of the heap table. In this post let us discuss about Clustered Table.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;A table with clustered index is called clustered table.Clustered index stores the actual data in the order of clustering key using a b tree structure and the data can be stored only in one order.That is the reason SQL server restricted the number of cluster index to one on a table.Let us see a logical representation of b tree structure. I have done this logical representation based on the copy of SalesOrderDetail table from AdventureWorks2008 database.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;USE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;mydb&lt;br /&gt;GO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;*&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;INTO&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;dbo.SalesOrderDetail&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;AdventureWorks2008.Sales.SalesOrderDetail&lt;br /&gt;GO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;CREATE UNIQUE CLUSTERED INDEX&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;ix_SalesOrderDetail&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;ON&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;dbo.SalesOrderDetail&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;SalesOrderDetailID&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-KpVEenx0R6o/UT6ESA093II/AAAAAAAADnc/fyBMYDixnc0/s1600/Clustered+Index+B+tree+Structure.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img alt="Clustered Index B tree structure" border="0" height="432" src="http://2.bp.blogspot.com/-KpVEenx0R6o/UT6ESA093II/AAAAAAAADnc/fyBMYDixnc0/s640/Clustered+Index+B+tree+Structure.png" title="Clustered Index B tree structure" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;This table has 121317 records. SQL server requires 3 level to store this data.Let us look into the Fig 1 and analyse the pages. On top level, you can see only one page which is called root page. In all B tree structure, there will be only one page in the root level which is the entry point to the tree structure.The root level &amp;nbsp;is always the highest level . In our case root page has index &amp;nbsp;level 2. The pages in the root level and intermediate levels are called index pages.In the index pages, SQL server stores the clustering key and entry point(page pointer) to the next level of B tree. The clustering key stored against child page id is the lowest value stored in the below level page(Child page). The maximum value of the clustering key on a specific child page can be obtained by looking into the next record. For example, in that root level first record (Salesorderdetailid =NULL,pageid=456) says, salesorderdetailid less than or equal to 29599 can be found in the page number 456. The next entry&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;(Salesorderdetailid =29599 ,pageid=520)&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;&amp;nbsp;says, salesorderdetailid value between 29599 and 60372 can be found on page 520 and son on.The prevpage and nextpage values will work as doubly link list to connect the pages in that level. As there is only one page in the root level, the value of prevpage and nextpage will be always 0.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;Let us move to the next level. we have four pages in this level. You can find the values in the nextpage and prevpage which links the pages in that level. This level is called intermediate level. The number of intermediate level and pages in the intermediate levels are depends on the size of the table and clustering key. A large table can have multiple intermediate level &amp;nbsp;and a small table might not have any intermediate level.The values in this level can be read in the same way as we did in the root level. For example first entry in the first page &amp;nbsp;of this level (&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;Salesorderdetailid =NULL,pageid=392) says , all record with salesorderdetailid less than and equal to 72 can be found in the page number 392.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;Next level is the bottom level is called leaf level (index level 0). The pages in this level are called &amp;nbsp;leaf pages or data pages. In this page you can find complete data(all column) &amp;nbsp;of each record in the salesorderdetails table.In other words , the leaf level of the clustered index is where the actual data is stored.&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;Let us create a copy of SalesOrderDetail table without any indexes&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;USE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;mydb&lt;br /&gt;GO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;*&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;INTO&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;dbo.SalesOrderDetailHeap&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;AdventureWorks2008.Sales.SalesOrderDetail&lt;br /&gt;GO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style="text-align: left;"&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now let us run the below set of query.Both will return the same record.We are more interested to see the IO part.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px; text-align: left;"&gt;SET STATISTICS IO ON&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-family: monospace; font-size: 12px; text-align: left;"&gt;GO&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color: grey;"&gt;* &lt;/span&gt;&lt;span style="color: blue;"&gt;FROM &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetail &lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetailID &lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;75&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;GO&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;*&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;FROM&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetailheap&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;WHERE&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SalesOrderDetailID&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;75&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;br /&gt;&lt;/code&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;The IO stats result look like as below.The logical read on the table which has clustered index is negligible compared to other one.&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-_9Jr9NEiITw/UT_BTpM8f4I/AAAAAAAADoU/kwvpJJGf8Tc/s1600/Clustered_index_IO_stats.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-_9Jr9NEiITw/UT_BTpM8f4I/AAAAAAAADoU/kwvpJJGf8Tc/s1600/Clustered_index_IO_stats.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Let us see how SQL server manage to fetch the record using clustered index with 3 logical reads.First of all we need to find the root node of the clustered index. The dbcc ind will help us to find that.&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;IND&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;(&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'SalesOrderDetail'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;1&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;span style="color: grey; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;This is returning 1501 records.This include one IAM page , one index page and 1499 data pages.Part of the output is shown below&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-F-IqlfT3B2s/UT-1rJs2K4I/AAAAAAAADns/8AxMKg0yrX0/s1600/Clustered_Index_Seek1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="50" src="http://1.bp.blogspot.com/-F-IqlfT3B2s/UT-1rJs2K4I/AAAAAAAADns/8AxMKg0yrX0/s400/Clustered_Index_Seek1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;From the output ,we can see that page 186 (page type 2) is the root page and this page is the entry point to this table. Let us see the out put of DBCC page.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;traceon&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;3604&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black;"&gt;page&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;186&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;3&lt;/span&gt;&lt;span style="color: grey;"&gt;) &lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;a href="http://1.bp.blogspot.com/-17LYI4vlapA/UT-3gBfLLcI/AAAAAAAADn0/-HF9F2MxGTo/s1600/Clustered_Index_Seek2.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" height="75" src="http://1.bp.blogspot.com/-17LYI4vlapA/UT-3gBfLLcI/AAAAAAAADn0/-HF9F2MxGTo/s400/Clustered_Index_Seek2.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
SQL server stores the lowest value of clustered key stored in the child page and its page id in the index pages.For example Page 456 will have information of all the records that have value less than or equal to &amp;nbsp;29599 for salesorderdetailid column . In the same way page 520 will have information of all records that have value between 29599 and 60372 for salesorderdetailid(29599 may be there in both pages) &amp;nbsp;and so on.The value of salesorderdetailid column for the record that we are searching is less than 29599. So the information about that records can be found in the childpage 456.&amp;nbsp;&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
Let us see what we can see inside the page 456&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
&lt;div dir="ltr" style="font-family: 'Times New Roman'; text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;traceon&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;3604&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman'; text-align: start;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;page&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;456&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;3&lt;/span&gt;&lt;span style="color: grey;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman'; text-align: start;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
The output contains 401 records and below is part of the output. you can run the DBCC page command with option 1 (last parameter) to see the page header.There we can find the m_type=2 which means it is a index page.As we discussed above,the details of records that we are searching (Salesorderdetailsid=75) can be found in the child page 393.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-tf76PVi0eGw/UT-6hv36AmI/AAAAAAAADn8/hw1xWB5bDYc/s1600/Clustered_Index_Seek3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="126" src="http://1.bp.blogspot.com/-tf76PVi0eGw/UT-6hv36AmI/AAAAAAAADn8/hw1xWB5bDYc/s400/Clustered_Index_Seek3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
Let us see what we can see in page number 393.&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div dir="ltr" style="font-family: 'Times New Roman'; text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;traceon&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;3604&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align: start;"&gt;
&lt;code style="font-family: 'Times New Roman'; font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-family: 'Times New Roman'; font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;page&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;393&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;3&lt;/span&gt;&lt;span style="color: grey;"&gt;) &amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;span style="color: blue; font-size: 12px;"&gt;with tableresults&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;From the page header section we can see that value of m_type is 1. So this page is data page and it is the leaf level of the index. On scrolling down the output we can see the details of the record that we are searching as given below.We have value for all columns of the record that we are searching as the leaf level of the clustered index is the actual data.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-6psOQfR0oF4/UT--O32RCUI/AAAAAAAADoI/GIppU8oMZn8/s1600/Clustered_Index_Seek4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="226" src="http://4.bp.blogspot.com/-6psOQfR0oF4/UT--O32RCUI/AAAAAAAADoI/GIppU8oMZn8/s640/Clustered_Index_Seek4.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;SQL server manage fetch the records from clustered index reading only three pages(Root page,one page from intermediate level and one page from level)&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Storage Overhead :&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Let us run the DBCC ind command for both tables(SalesOrderDetail and&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;SalesOrderDetailHeap)&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;IND&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;(&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'SalesOrderDetail'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;1&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style="color: grey; font-size: 12px;"&gt;&lt;span style="color: blue; font-size: 12px;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;IND&lt;/span&gt;(&lt;span style="color: red; font-size: 12px;"&gt;'mydb'&lt;/span&gt;,&lt;span style="color: red; font-size: 12px;"&gt;'SalesOrderDetailHeap'&lt;/span&gt;,&lt;span style="color: black; font-size: 12px;"&gt;1&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="color: grey; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;From the output, we can see that the table, that does not have clustered index need 1496 page where as the table with clustered index need 1501 pages. This extra 5 pages are used to store the intermediate and root level of the b tree structure.Considering the advantage that we have on the select (lesser IO), this is a negligible overhead.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
If you liked this post, do like my page on &lt;a href="http://www.facebook.com/practicalSqlDba"&gt;&lt;b&gt;FaceBook&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script&gt;(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;

&lt;br /&gt;
&lt;div class="fb-like" data-font="arial" data-href="http://www.facebook.com/practicalSqlDba" data-send="true" data-show-faces="true" data-width="450"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;www.PracticalSqlDba.com&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/practicalsqldba/yuZS/~4/W8b-40Oks8M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.practicalsqldba.com/feeds/6309283524008805148/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.practicalsqldba.com/2013/03/sql-server-explaining-clustered-table.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/6309283524008805148?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/6309283524008805148?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/practicalsqldba/yuZS/~3/W8b-40Oks8M/sql-server-explaining-clustered-table.html" title="SQL Server : Index Part 3 :Explaining the Clustered Table Structure" /><author><name>Nelson John</name><uri>https://plus.google.com/101868886149088241868</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-jrulBzTAKh8/AAAAAAAAAAI/AAAAAAAAC_0/p_1c9aZUN7o/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-KpVEenx0R6o/UT6ESA093II/AAAAAAAADnc/fyBMYDixnc0/s72-c/Clustered+Index+B+tree+Structure.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.practicalsqldba.com/2013/03/sql-server-explaining-clustered-table.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAHRnk-fCp7ImA9WhBRF0w.&quot;"><id>tag:blogger.com,1999:blog-6097409806591916698.post-3199058315930468420</id><published>2013-03-07T18:45:00.001-08:00</published><updated>2013-03-07T18:45:37.754-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-07T18:45:37.754-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Internals" /><title>SQL Server : Understanding the IAM Page</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In my earlier post, we have discussed about &lt;b&gt;&lt;a href="http://www.practicalsqldba.com/2012/08/sql-server-understanding-data-page.html"&gt;Data&lt;/a&gt;&lt;/b&gt;,&lt;a href="http://www.practicalsqldba.com/2012/09/sql-server-understanding-gam-and-sgam.html"&gt;&lt;b&gt;GAM&lt;/b&gt;&lt;/a&gt;,&lt;a href="http://www.practicalsqldba.com/2012/09/sql-server-understanding-gam-and-sgam.html"&gt;&lt;b&gt;SGAM&lt;/b&gt; &lt;/a&gt;and &lt;a href="http://www.practicalsqldba.com/2012/10/sql-serverunderstanding-page-free-space.html"&gt;&lt;b&gt;PFS &lt;/b&gt;&lt;/a&gt;pages. In this post, let us try to understand about the IAM (Index Allocation Map) page.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In SQL server 2005 and later, there are three types of allocation units.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;IN_ROW_DATA (btree and heap) allocation unit&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;LOB_DATA allocation unit&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;ROW_OVERFLOW_DATA allocation unit&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;While discussing about &lt;a href="http://www.practicalsqldba.com/2012/09/sql-server-understanding-gam-and-sgam.html"&gt;&lt;b&gt;GAM/SGAM&lt;/b&gt;&lt;/a&gt; pages, we have noticed that, a GAM page can track &amp;nbsp;4GB worth space and they are repeated in the 4GB intervel. An IAM page track the pages/extents allocation in GAM interval of a partition for specific allocation unit of a table. Let us try to make it more clear .&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Let us create a table with three column having data type of varchar(3000) and one column with data type LOB. This will ensure three type allocation to this table.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;USE &lt;/span&gt;&lt;span style="color: black;"&gt;mydb&lt;br /&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;CREATE TABLE &lt;/span&gt;&lt;span style="color: black;"&gt;IAMTable&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;Id &lt;/span&gt;&lt;span style="color: blue;"&gt;INT&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;data1 &lt;/span&gt;&lt;span style="color: blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;3000&lt;/span&gt;&lt;span style="color: grey;"&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;data2 &lt;/span&gt;&lt;span style="color: blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;3000&lt;/span&gt;&lt;span style="color: grey;"&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;data3 &lt;/span&gt;&lt;span style="color: blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;3000&lt;/span&gt;&lt;span style="color: grey;"&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;Lobdata &lt;/span&gt;&lt;span style="color: blue;"&gt;NTEXT&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now let us insert a record into this table&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;INSERT INTO &lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;IAMTable &lt;/span&gt;&lt;span style="color: blue; font-size: 12px;"&gt;VALUES &lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;1&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'A'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'B'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'C'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;N'Test'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Here we are inserting a record which will not generate row overflow. We will use the DBCC IND command to list the pages allocated to this table.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: blue; font-size: 12px;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;IND&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;(&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: red; font-size: 12px;"&gt;'IAMTable'&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-size: 12px;"&gt;1&lt;/span&gt;&lt;span style="color: grey; font-size: 12px;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1cIu1kuziyg/UTk0GZN-EtI/AAAAAAAADl8/IpulJCJ7dSo/s1600/IAM_Page_1.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img alt="IAM page" border="0" height="80" src="http://2.bp.blogspot.com/-1cIu1kuziyg/UTk0GZN-EtI/AAAAAAAADl8/IpulJCJ7dSo/s640/IAM_Page_1.png" title="" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;span style="color: grey; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: grey; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: grey; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: grey; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: grey; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: grey; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;From the output it is clear that , SQL server allocated two IAM pages (page type 10) to this table to track the allocation of &amp;nbsp;IN_ROW_DATA and &amp;nbsp;LOB_DATA . As the size of existing record is not enough to create ROW_OVERFLOW_DATA, SQL server did not allocated a IAM page to track row_overflow allocation.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Let us try to insert a record which will force the SQL server to generate the row_overflow data.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DECLARE &lt;/span&gt;&lt;span style="color: #434343; font-size: 12px; text-align: left;"&gt;@data1 &lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;3000&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SET &lt;/span&gt;&lt;span style="color: #434343;"&gt;@data1&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;= &lt;/span&gt;&lt;span style="color: magenta;"&gt;REPLICATE&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'A'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;3000&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;INSERT INTO &lt;/span&gt;&lt;span style="color: black;"&gt;IAMTable &lt;/span&gt;&lt;span style="color: blue;"&gt;VALUES &lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: #434343;"&gt;@data1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: #434343;"&gt;@data1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: #434343;"&gt;@data1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: red;"&gt;N'Test'&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black;"&gt;IND&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: red;"&gt;'IAMTable'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-D-RsMjeJWw8/UTk25mjqkTI/AAAAAAAADmQ/JkDWJi341ak/s1600/IAM_Page_2.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;img alt="IAM page" border="0" height="126" src="http://4.bp.blogspot.com/-D-RsMjeJWw8/UTk25mjqkTI/AAAAAAAADmQ/JkDWJi341ak/s640/IAM_Page_2.png" title="Fig 2" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt; Now the table has IAM pages for all three allocation units. If we have more partition on this table, there will be separate set of IAM pages for each partition. Below picture will give you a pictorial representation.&lt;/span&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-jkS5131IEls/UTk9HLYhnQI/AAAAAAAADmc/NVjApQo4QD4/s1600/IAM_Structure.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="358" src="http://1.bp.blogspot.com/-jkS5131IEls/UTk9HLYhnQI/AAAAAAAADmc/NVjApQo4QD4/s640/IAM_Structure.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;
&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;In short a heap/B tree structure can have minimum of one IAM page and maximum of (No. of partition X 3) &amp;nbsp;IAM pages. If the tables grows &amp;nbsp;further and pages allocated from different GAM interval, more IAM pages will be added.These IAM pages need to be linked together and this list is called IAM chain.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;div style="text-align: justify;"&gt;
Now we have learned the usage of IAM page. Let us try to see what is there inside the IAM  page.In the earlier post about &lt;a href="http://www.practicalsqldba.com/search/label/Index%20Fragmentation"&gt;fragmentation&lt;/a&gt;, we have discussed that, first eight pages of a table/index are single page allocation and will be allocated from mixed extents. From Fig 2 , we know that page now 126 (PagePID column) is an IAM page which track the the in_row allocation. Below is the a section of DBCC page command output.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/span&gt;&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;traceon&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;3604&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;GO&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-family: monospace; font-size: 12px;"&gt;DBCC&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;page&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;(&lt;/span&gt;&lt;span style="color: red; font-family: monospace; font-size: 12px;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;1&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;126&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;,&lt;/span&gt;&lt;span style="color: black; font-family: monospace; font-size: 12px;"&gt;3&lt;/span&gt;&lt;span style="color: grey; font-family: monospace; font-size: 12px;"&gt;)&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-vS3hSUjP80I/UTlFtk8GvJI/AAAAAAAADms/YsRecu7yorU/s1600/Iam_Page_Structure.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="http://3.bp.blogspot.com/-vS3hSUjP80I/UTlFtk8GvJI/AAAAAAAADms/YsRecu7yorU/s640/Iam_Page_Structure.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;In the &lt;u&gt;IAM header section&lt;/u&gt; , we can see following field.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;SequenceNumber : This is the position of the IAM page in the IAM chain. This increases by one for each page added to the IAM chain.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Status: Unused&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Objectid : Unused&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Indexid : Unused&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Page_Count : Unused&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Start_pg:This is the GAM interval that the page maps.It store the first page id in the mapped GAM interval.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;Single Page allocation section&lt;/u&gt;: These are the first 8 pages allocated from the mixed extent.After the 8th page, SQL server allocate uniform extents. So these section is used only in the first IAM page of the chain.&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Page number 120 and 176 are allocated from mixed extent. This is the same information we have from Fig 2 (Page type column value =1)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;Extent Allocation Section:&lt;/u&gt;&amp;nbsp;This section will describe the extents allocated to the allocation unit.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;This part has referenced from &amp;nbsp;:&amp;nbsp;&lt;a href="http://www.sqlskills.com/blogs/paul/inside-the-storage-engine-iam-pages-iam-chains-and-allocation-units/"&gt;http://www.sqlskills.com/blogs/paul/inside-the-storage-engine-iam-pages-iam-chains-and-allocation-units/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;Let us execute the below script 7 time . After that there will be 9 records in the table (Two records are inserted as part of earlier step)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;div dir="ltr" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;DECLARE&amp;nbsp;&lt;/span&gt;&lt;span style="color: #434343; font-size: 12px; text-align: left;"&gt;@data1&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-size: 12px; text-align: left;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;(&lt;/span&gt;&lt;span style="color: black; font-size: 12px; text-align: left;"&gt;3000&lt;/span&gt;&lt;span style="color: grey; font-size: 12px; text-align: left;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;SET&amp;nbsp;&lt;/span&gt;&lt;span style="color: #434343;"&gt;@data1&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: magenta;"&gt;REPLICATE&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'A'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;3000&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;INSERT INTO&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;IAMTable&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;VALUES&amp;nbsp;&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: #434343;"&gt;@data1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: #434343;"&gt;@data1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: #434343;"&gt;@data1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: red;"&gt;N'Test'&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now let us see how the IAM page looks like&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black;"&gt;traceon&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;3604&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: black;"&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: blue;"&gt;DBCC &lt;/span&gt;&lt;span style="color: black;"&gt;page&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'mydb'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;126&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;3&lt;/span&gt;&lt;span style="color: grey;"&gt;) &lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-Fc2_vPTPFlE/UTlMoSJvhOI/AAAAAAAADm8/J-ts00_o4l4/s1600/Iam_Page_Structure_2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="272" src="http://4.bp.blogspot.com/-Fc2_vPTPFlE/UTlMoSJvhOI/AAAAAAAADm8/J-ts00_o4l4/s640/Iam_Page_Structure_2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;code style="font-size: 12px;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;All single page allocation are done and for the 9th record, SQL server allocated an extent which start from page no 192 to 199.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Note&lt;/b&gt; : I have learned a lot about internals from Paul S Randal &lt;a href="http://www.sqlskills.com/"&gt;blog &lt;/a&gt;. This is only an attempt to represent the way I understood.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
If you liked this post, do like my page on &lt;a href="http://www.facebook.com/practicalSqlDba"&gt;FaceBook&lt;/a&gt;&lt;br /&gt;
&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script&gt;(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;

&lt;br /&gt;
&lt;div class="fb-like" data-font="arial" data-href="http://www.facebook.com/practicalSqlDba" data-send="true" data-show-faces="true" data-width="450"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;www.PracticalSqlDba.com&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/practicalsqldba/yuZS/~4/mp4OGHHglpI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.practicalsqldba.com/feeds/3199058315930468420/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.practicalsqldba.com/2013/03/sql-server-understanding-iam-page.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/3199058315930468420?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6097409806591916698/posts/default/3199058315930468420?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/practicalsqldba/yuZS/~3/mp4OGHHglpI/sql-server-understanding-iam-page.html" title="SQL Server : Understanding the IAM Page" /><author><name>Nelson John</name><uri>https://plus.google.com/101868886149088241868</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-jrulBzTAKh8/AAAAAAAAAAI/AAAAAAAAC_0/p_1c9aZUN7o/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-1cIu1kuziyg/UTk0GZN-EtI/AAAAAAAADl8/IpulJCJ7dSo/s72-c/IAM_Page_1.png" height="72" width="72" /><thr:total>6</thr:total><feedburner:origLink>http://www.practicalsqldba.com/2013/03/sql-server-understanding-iam-page.html</feedburner:origLink></entry></feed>
