2008-11-26 130 views
0

我試圖運行一個更新查詢,更新一個表基於它在另一個表中找到的行,其中一個遠程表的列值中的任何位置存在特定的值。我使用的查詢是:SQL Server 2005 charindex性能

update 
    c 
set 
    LastStep = @StepNumber, 
    LastDate = pv.Created 
from 
    @Conversions c 
     inner join PageViews pv on c.SessionID = pv.SessionID 
where 
    c.GoalName = @GoalName AND 
    pv.Created > c.LastDate AND 
    charindex(@MatchValue, pv.PageUrl) > 0; 

在有在瀏覽量表50,000行測試數據庫,這種單查詢導致剛剛超過100萬讀取根據SQL事件探查器,並以1分14秒。任何想法爲什麼?

回答

1

以下列有索引嗎? pv.SessionID,pv.created

你看過最終的執行計劃嗎?

+0

生成的EP顯示where子句的聚集索引掃描。 – Chris 2008-11-26 13:55:13