sql 2000 CPU常达99% 求解决方案 跟sql 优化方法
我是做ASP网站开发的   
 数据库有一张表有近200万条数据   
 我觉得最可能是查询这张表时出的问题   
 我想知道数据库的cpu占用跟sql事件跟踪器里看到的cpu占用时间   、reads等有什么   
 关系。这些数值在哪个范围内是允许的可接受的,如果超出了该怎么优化?   
 我目前的优化工作主要做了   建了聚集索引,使用存储过程   
 期待高手进来
------解决方案--------------------1.请确认电脑是否已经中毒了? 
 2.200万表的数据是否可以把一部分数据移除?或者把它分成多个表? 
 分成多表的办法:一种不修改数据结构,这种办法当然要有外键关联;另一种办法是数据结构不变,按年月份把一个表的数据分为多表数据   
------解决方案--------------------如果排除了以上因素,跟踪一下是什么SQL查询时导致CPU占用100%   
 很有可能是效率极低的SQL查询时导致的   
 比如:是否有cross join 类型的查询   
------解决方案--------------------尽量不要用 in, or, *,等等 
 最好每个查询都有where
------解决方案--------------------exec sp_executesql @strtemp,N '@Counts int out  ',@Counts out 
 不要每次都count(),会很好性能的,可以作输入输出参数,避免每次都count(),性能会有很大提高。
------解决方案--------------------count()可以作为output参数, 
 CREATE PROCEDURE fenye 
 (@RecordCount int =0 output, 
 @Tables varchar(1000), 
 @PrimaryKey varchar(100), 
 @Sort varchar(200) = NULL, 
 @CurrentPage int = 1, 
 @PageSize int = 10, 
 @Fields varchar(1000) =  '* ', 
 @Filter varchar(1000) = NULL, 
 @Group varchar(1000) = NULL, 
 @Totalcount int = 0 output -- 加这个参数,如果totalcount <=0 就count(),否则不count(),这样会好很多,每次count()会耗很多资源。   
------解决方案--------------------set @strtemp=  ' SELECT @Counts = count( '+@PrimaryKey+ ')  FROM  ' ++ @Tables + @strFilter +  '  ' + @strGroup + '  '   
 这句话对么?怎么++都出来了?