こんにちは私は誰がこのクエリを最適化する必要がありますどのようなヒントを持っているwounder?どのように最適化とSQLクエリのヒント
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 into @table1 SELECT id,macAdress,portName,switchName,vlan FROM ForwardDatabase
SET @[email protected]@ROWCOUNT
select @dateNow = getdate()
SET @CurrentRow=0
WHILE @CurrentRow<@RowsToProcess
BEGIN
SET @[email protected]+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
FROM @table1
WHERE [email protected]
select @macAdress=macAdress,@port=portName,@switchName=switchName,@vlan=vlan from @table1 where RowID = @SelectCol1
select @changedmacAdress=macAdress,@changedvlan=vlan from HistoryForwardDatabase where macAdress= @macAdress and vlan = @vlan and portName = @port and [email protected] and changeDate = (select MAX(changedate) from HistoryForwardDatabase where portName = @port and [email protected])
IF(@changedmacAdress is null and @changedvlan is null)
begin
insert into HistoryForwardDatabase (macAdress,portname,changeDate,switchName,vlan) select macAdress,portName,@dateNow,switchName,vlan from @table1 where portName = @port and switchName [email protected]
end
END
質問を最適化するヒントがあります:特定のことを尋ね、ユースケースやテーブル構造のような背景を与えます。ここに30行の手続きを投げたり、1行を要求したりしないでください。 – Jacob
今後の参考として、いつでもカーソルやwhileループを使用するように誘惑されるときは、誘惑に抵抗し、物事を行うためのセットベースの方法があるかどうかを見てください。時間の90%以上があり、はるかに速く動作します。大規模なループではない場合でも、大規模なデータセットを処理するときには、セットベースのソリューションがわかるように、これを実行します。これは役立つかもしれません:http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them – HLGEM
ありがとうございます。私は心配しています:) – Trind