大家帮帮忙,看看这句话怎么优化

大家帮帮忙,看看这句话怎么优化 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiDB/html/delphi_20061221153924184.html
insert   into   mdb..tbnv   (counter_sno,in_no,trn_date,curr_no,item_no,account_no,trn_amt)select   isnull(counter_sno,true_sno),isnull(in_no,0),'20061206',isnull(curr_no,0),isnull(item_no,0),isnull(account_no,0) from   (select   *   from   sqlsrv.tbAc.dbo.tblsz_ht06   where   trn_date   =   '20061206')   a   right   join   (select   distinct(true_sno)   from   sqlsrv.tbJD.dbo.tbocrresult   where   trn_date='20061206'and   packfile   =   '2006120601'   and   len(true_sno)=12)   b   on   counter_sno   =   true_sno  
   
   
  其中mdb..tbnv   是用设置远程服务器的Access表,所有字段都不允许为空也没有默认值,sqlsrv.tbAc.dbo.tblsz_ht06和sqlsrv.tbJD.dbo.tbocrresult   都是另外服务器上的SQLServer表,其中记录数在300万左右,现在运行需要大概2分半时间,希望大家帮帮忙看看是否能把时间缩短到1分钟啊,其中表的索引我都已经加了不用考虑了,主要看看这句话什么地方还能优化的,谢谢大家

提前

一大堆,没仔细看,  
  简单的把你的代码改成这种伪代码  
  insert   into   tablename(c_name1,cname2,cname3...cname_N)第一部分  
  select   c_name1,cname2,cname3...cname_N   from       第二部分  
  一个由关联查询得到的新结果集合                                 第三部分  
   
  但如果不改表结构以及索引这些硬性的东西,单纯依靠从语句的修改来提升性能,那么唯一可以改的就是语句中的第三部分,即关联查询的那一部分,不了解的表,但要改,以就是根据你的表结构看看关联查询部分的性能提升

select   *   与distinct(true_sno)   优化不了       基本上没有什么可优化的了     300万数据也不少啊!

想办法把你的isnull去掉,列上尽量不要用函数

isnull是对结果的操作,用函数不会影响速度;  
  将select   *   换成select   字段列表

谢谢大家,这句话问题不大,我数据库连到了备份机上去了,所以才慢的,大家辛苦了

posted on 2008-12-11 10:00  delphi2007  阅读(184)  评论(0编辑  收藏  举报