注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 模拟Linux客户端远程登陆L..
 帮助

对性能优化的一点思考


2007-11-16 11:50:24
 标签:性能优化   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://boyi55.blog.51cto.com/4345/50781
   说到数据库性能优化,大家都能说上来N条注意事项。可真正运用的时候往往会忽略这方面的内容。当时有时候可能是由于要的比较急,容不得多想。但磨刀不误砍柴工。下面是一个我刚近遇到的一个例子。希望大家可以重视下这方面的内容。

原因:公司要对某系统数据进行审核。于是得到任务,从数据库中提取出某一日的相关数据,及当日及其后第一日,第三日,第五日,第十日等的相应收盘价。

分析:收盘价放在jiaoyi表里。大约有四百万行数据,相关数据不是很多只有几万。中间对应要用到表day_a主要存储交易日信息。主要用到的也就这三个表。

编写代码:
1.我想到用join直接生成结果集。但运行十分钟还没有出来结果。放弃。
2.准备写一张表,然后向里面插入数据。
即先将相关数据写入到表中,再update当日,五日,十日等数据。
但update的时候速度非常慢。我还是一列一列的update,大约一列要三到五分钟,代码简单如下:
update a
set a.today=b.f0050
from boyi_11001 a,(select symbol,f0050 from jiaoyi where convert(varchar(20,createdate,112)=20071018) b
where a.symbol=b.symbol
后来发现createdate这一列为写入时间,要用TDATE列。TDATE为int型。改为如下代码
update a
set a.today=b.f0050
from boyi_11001 a,(select symbol,f0050 from jiaoyi where Tdate=20071018) b
where a.symbol=b.symbol
结果只用了2秒。当然可能还是TDATE上做过索引有关系。
在这只是想说。优化要体现在平时的每一段代码里。

本文出自 “无名” 博客,请务必保留此出处http://boyi55.blog.51cto.com/4345/50781





    文章评论
 
2007-11-16 13:35:00
文章的题目应该为“对数据库性能优化的一点思考”,说明是数据库的!

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: