There should be, although how much might be debatable. Ultimately - I think the "sweet spot" is the version you didn't include:
CREATE NONCLUSTERED INDEX IX_OrderDetailDateProdSold ON dbo.OrderDetail
( OrderDate ASC, ProductID ASC) INCLUDE (QtySold);
The short version as I understand it to make the "ideal" covering would be:
- columns appearing in the WHERE, FROM, GROUP BY and ORDER BY should appear in the "main part" of the index.
- columns not otherwise included that appear in the SELECT or HAVING go in the UNCLUDE clause.
Technically - since the "main part" is what the B-tree is based on - by keeping the main part as skinny as you can, you get better perf, while avoiding the bookmark lookup with the INCLUDE stuff.
----------------------------------------------------------------------------------
Your lack of planning does not constitute an emergency on my part...unless you're my manager...or a director and above...or a really loud-spoken end-user..All right - what was my emergency again?