2008-11-26 95 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