0

#itemtempから 1 つのレコードを取得し、その一致からすべてのエントリを見つけてReportCSharp、それらの一致を に挿入するクエリがあります#link_table#itemtemp現在、クエリは 7.5 分で実行されますが、テーブル内の 1458 レコードのみを反復処理するには時間がかかるようです。

DECLARE 
    @num    int
,   @path   varchar(100)
,   @output varchar(100)
,   @max    int

SET @num = 1

SET @max = (SELECT max(num) FROM #itemtemp)

WHILE @num < @max
BEGIN

    SET @path = (SELECT path from #itemtemp where num = @num)

    INSERT INTO #link_table
    SELECT 
        itemId
    ,   Path
    ,   @path
    FROM ReportCsharp
    WHERE Script like '%"' + @path + '"%' 

    SET @num += 1
END

WHILEループを削除して、より多くのセットベースの操作に置き換えるにはどうすればよいですか?

4

2 に答える 2

0
INSERT INTO #link_table
    SELECT rcs.itemId,
           rcs.Path,
           it.Path
        FROM ReportCsharp rcs
            INNER JOIN #itemtemp it
                ON rcs.Script LIKE '%' + it.Path + '%';
于 2015-04-09T20:06:33.670 に答える