日期:2014-05-17  浏览次数:20470 次

新版本的 SQL SERVER 性能这么低吗?
我这里有一台旧的服务器,配置大致如下:
CPU:Intel Xeon CPU E5335 * 2 (8CPUs)
内存:4GB
硬盘:143GB*3 (Raid5)
系统:windows server 2003 英文标准版+SP2
数据库:SQL2000 + SP4

查询某一个数据表内的某一个存储过程。需要100秒左右

--------

后来买了一台新服务器,配置大致如下:
CPU:Intel Xeon CPU E7-4807 *2 (24CPUs)
内存:32GB
硬盘:300GB*5 (Raid6)
系统:windows server 2008 R2 中文标准版+SP1
数据库:SQL2008 R2 + SP2

查询之前的那个存储过程,需要93秒左右。

----------------

后来。使用SQL2008自带的 SQL Server Profiler 及 数据库引擎优化顾问 进行分析。
没有发现,其对这个存储过程有什么优化建议

----------------

我是想问,难道是我有什么地方作过不对,还是有什么地方有问题。
硬件环境可能说有了极大的改善,但是数据库的查询效果却是非常不尽如人意。
sql?server profiler 优化 存储过程 sql

------解决方案--------------------
那要看你存储过程内部数据是怎么处理的了,语句有没有优化的空间
------解决方案--------------------
能否把执行计划帖出来啊,可以按下面的方式来,然后把列名为Rows Executes StmtText StmtId NodeId Parent PhysicalOp LogicalOp Argument DefinedValues EstimateRows EstimateIO EstimateCPU AvgRowSize TotalSubtreeCost OutputList Warnings Type Parallel EstimateExecutions的文本计划给出来,可能会很多内容。


set statistics profile on
Go
exec  [dbo].[SP_QryOrderDeliverySchedule] ......
------解决方案--------------------
另外,我发生你的很多条件 都用LIKE, 比如 B.CustomerNo LIKE '%'+@CustomerNo+'%'  ,必须要用LIKE吗? 可以用=吗,比如,  B.CustomerNo =@CustomerNo 
------解决方案--------------------
建议楼主做如下优化:
1、将临时表#TEMP1、#TEMP2、#TEMP3等全部改为固定的实际表,临时表和游标等数据库的珍贵资源尽量少用;
2、建议这几个字段建立索引:CustomerNo、CustomerOrdersNo、ProductNo、ProductClass、OrdersClass
------解决方案--------------------
引用:
引用:
另外,我发生你的很多条件 都用LIKE, 比如 B.CustomerNo LIKE '%'+@CustomerNo+'%'  ,必须要用LIKE吗? 可以用=吗,比如,  B.CustomerNo =@CustomerNo

其它象 LIKE 我也想不用。

可是,当一个查询,是有很多条件的,,

并不是每一个查询条件都会启用的。
……

"假如,客户订单那个条件为空时。。就表示查询所有的客户订单" 
那你应该这么写:
and (B.CustomerNo =@CustomerNo or  @CustomerNo is null) 然后对B.CustomerNo 建INDEX,这样才能利用到INDEX。
------解决方案--------------------
数据库在like方面很弱的,模糊匹配还是从程序段下手吧。
------解决方案--------------------
就你的代码而言,数据库需要的是快速的IO,但是你升级的配置相比之前的电脑,正好没有能够明显提高IO性能。你新电脑的浮点运算能力提高不少,但是你贴出来的代码中,只有极少的运算代码。
你的老电脑升级个SSD,肯定有质的飞跃。

就目前而言,你要么升级SSD,要么优化代码,当然两者都作是最好的。
------解决方案--------------------
引用:
引用:
这样的过程,要是能快了,就怪了。

哦,我想说的,不是这个存储过程是否优质,

而是想说。硬件环境得到的极大的改善。执行同样的存储过程在速度上却只能得到很小很小的增加。

这与硬件的投入太不成比例了。

总感觉好象作生意一样。

投入10万元,每月能赚5000元,
现面投入 100万元,每月只能赚 6000元。

一个人很口渴,你却给他吃馒头,请问给他吃小馒头跟大馒头有什么区别吗?