大家帮帮忙,看看这句话怎么优化
大家帮帮忙,看看这句话怎么优化 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分钟啊,其中表的索引我都已经加了不用考虑了,主要看看这句话什么地方还能优化的,谢谢大家
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 字段列表
谢谢大家,这句话问题不大,我数据库连到了备份机上去了,所以才慢的,大家辛苦了