tsql - Tips on how to optimize and SQL Query -


hi wounder if has tips on how should optimize query?

declare @rowstoprocess  int declare @currentrow     int declare @selectcol1     int declare @datenow datetime declare @macadress varchar(100); declare @port varchar(100); declare @switchname varchar(100); declare @vlan varchar(100);  declare @changedmacadress varchar(100); declare @changedvlan varchar(100);  declare @table1 table (rowid int not null primary key identity(1,1), col1 int,  [macadress] [varchar](255) null,  [portname] [varchar](255) null,  [switchname] [varchar](255) null,  [vlan] [varchar](255) null)    insert @table1 select id,macadress,portname,switchname,vlan forwarddatabase  set @rowstoprocess=@@rowcount  select @datenow = getdate()  set @currentrow=0   while @currentrow<@rowstoprocess  begin   set @currentrow=@currentrow+1      set @macadress = null;  set @port = null;  set @switchname = null;  set @vlan = null;       set @changedmacadress = null;      set @changedvlan = null;     select      @selectcol1=col1,@macadress=macadress,@port=portname,@switchname=switchname,@vlan=vlan     @table1     rowid=@currentrow      select @macadress=macadress,@port=portname,@switchname=switchname,@vlan=vlan @table1 rowid = @selectcol1     select @changedmacadress=macadress,@changedvlan=vlan historyforwarddatabase macadress= @macadress , vlan = @vlan , portname = @port , switchname=@switchname , changedate = (select max(changedate) historyforwarddatabase  portname = @port , switchname=@switchname)     if(@changedmacadress null , @changedvlan null)     begin            insert historyforwarddatabase (macadress,portname,changedate,switchname,vlan) select macadress,portname,@datenow,switchname,vlan @table1 portname = @port , switchname =@switchname     end end 

this query might trick you:

insert historyforwarddatabase (macadress, portname, changedate, switchname, vlan) select f.macadress, f.portname, h.changedate, f.switchname, f.vlan  forwarddatabase f left join historyforwarddatabase h     on f.macadress= h.macadress      , f.vlan = h.vlan      , f.portname = h.portname     , f.switchname= h.switchname      , h.changedate = (select max(h2.changedate)          historyforwarddatabase h2          h2.portname = h.portname          , h2.switchname h.switchname) h.macaddress null , h.vlan null 

Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

visual c++ - Using relative values in array sorting ( asm ) -