新版本的 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
[解决办法]
那要看你存储过程内部数据是怎么处理的了,语句有没有优化的空间
[解决办法]
能否把执行计划帖出来啊,可以按下面的方式来,然后把列名为RowsExecutesStmtTextStmtIdNodeIdParentPhysicalOpLogicalOpArgumentDefinedValuesEstimateRowsEstimateIOEstimateCPUAvgRowSizeTotalSubtreeCostOutputListWarningsTypeParallelEstimateExecutions的文本计划给出来,可能会很多内容。
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
[解决办法]