我有一个大的临时表(约1.6亿行)#itemsTemp
itemId | style | styleWeight
--------------------------------
int | smallint | float(53)
以及以下查询:
select
itemId,
style,
SUM(styleWeight) itemCount
from
#itemsTemp
group by itemId,style
目前#itemsTemp
没有索引。我对这里最好的东西感到有点困惑:
itemId
和style
(可能include
styleWeight)的综合索引itemId
和style
我应该走哪条路?为什么?还有其他选择吗?
答案 0 :(得分:4)
包含itemId
的{{1}}和style
上的综合索引将是最佳选择。
这将允许styleWeight
无需排序和/或群集搜索/ RID查找开销。
答案 1 :(得分:3)
SQL Server 2008实际上是suggests missing indexes if you include the actual execution plan。 database tuning advisor tool也为您建议索引。
然而最佳索引取决于针对此表运行的其他查询:
实际上,索引建议功能往往效果很好 - 我只是按照它的建议(经过快速思考/健全性检查)然后只运行一些简单的测试以确保查询实际上是使用新的指数(ES)。
答案 2 :(得分:1)
除了双向评估性能(手动)之外,您还可以使用查询优化提示 - 例如:http://msdn.microsoft.com/en-us/library/ms181714.aspx。
另外 - 如果你的临时表太大了,我想知道解决问题的方法是否比使用临时表更好。
另外 - 你多久写一次与阅读?会议有多长?您是否可以将其用于其他程序?