对性能优化的一点思考

说到数据库性能优化,大家都能说上来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上做过索引有关系。
在这只是想说。优化要体现在平时的每一段代码里。