我正在尝试运行一个更新查询,基于在另一个表中找到的行更新一个表,其中在远程表的列值中的任何位置存在特定值。我使用的查询是:
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行的测试数据库的PageViews表中,这个单个查询根据SQL分析器导致了略超过1百万的读取,并且需要1分钟14秒的时间。有什么想法为什么会这样?