Archive for June 26th, 2009
Included columns
Comments enabled. I *really* need your comment
Answering questions asked on the site.
Peter asks:
I've been looking around for explanation of how
INCLUDEDcolumns in SQL Server indexes work and found myself totally confused.Could you please explain what they are for?
Thanks!
In a couple of words, an INCLUDED column is a column which is included into the index payload but not the key, i. e. the index leaves are not sorted on this column.
This can save some DML overhead on columns which are filtered on non-ranged conditions.
If the index leaves are less in size than the table rows, it can be more efficient to get the column value from the index rather than from the table to filter on it.
This can help to get rid of expensive Key Lookups or Clustered Index Scans.
In one of applications I developed, I had a large table that kept the restaurant orders.
The table was very large both in row count and the row size: a little less than a hundred columns.
Among other fields there was a DATETIME column (the order date) and an INT column (the client id)
One of the most used reports required that I calculated the average price of the orders for a certain set of clients within a certain period, say, for June.
For the sake of brevity, I'll replace all these numerous columns with a single NVARCHAR(4000) column.
This will make the table definition more brief and comprehensible, leaving the table rows as large.
Here's what the table looked like:
Read the rest of this entry »
Subscribe in a reader