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
Post a Comment