一个400GB表,一个查询 – 需要调优的想法(SQL2005)
我有一个我想要优化的大桌子.
我正在使用MS-SQL 2005服务器.我会尝试描述它如何使用,如果有人有任何建议,我将非常感激. 该表约400GB,每天有1亿行和100万行插入. k1 k2 k3 k4 k5 k6 k7 d1 哪里 k1: varchar(3),primary key - clustered index,10 possible values k2: bigint,total rows/10 possible values k3: int,10 possible values k4: money,100 possible values k5: bool k6: bool k7: DateTime 只运行一个选择查询,如下所示: SELECT TOP(g) d1 FROM table WITH(NOLOCK) WHERE k1 = a AND k3 = c AND k4 = d AND k5 = e AND k6 = f ORDER BY k7 其中g =大约100万 所以我目前在两个主键列上只有一个聚簇索引.我的问题是:我应该添加什么索引来改善这个查询的性能? 将每个列分开的索引是一个不错的选择?我认为一个索引将占用大约5-8GB. DB服务器总共有8GB RAM. 请不要说最好的事情是试验.这类似于“我不知道,工作出来你自己”:) 任何提示非常感谢! 由doofledorfer编辑 – 您在这里引发了过早优化的爆发,如果不是彻底的建议,“最好的事情是实验”.如果您需要有用的帮助,您需要澄清一些问题. – doofledorfer 编辑:至于现在的帖子的评论现在在下面和查询计划一起发布
是的,它不是CPU限制.磁盘访问高.所有可用的RAM似乎都被使用.是否明智地使用还有待观察.
我的意思是所有数据在某个时候被使用 – 并不是所有的数据都被每个用户在每个查询中使用.
|