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
INCLUDED
columns 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 »