Производительность SQL Server 2005 charindex - PullRequest
0 голосов
/ 26 ноября 2008

Я пытаюсь выполнить запрос на обновление, который обновляет одну таблицу на основе строк, найденных в другой таблице, где определенное значение существует где-либо в одном из значений столбца удаленной таблицы. Я использую запрос:

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 этот единственный запрос вызывает чуть более 1 миллиона операций чтения в соответствии с профилировщиком SQL и занимает 1 минуту и ​​14 секунд. Есть идеи почему?

1 Ответ

1 голос
/ 26 ноября 2008

Есть ли в следующем столбце индексы? pv.SessionID, pv.created

Вы смотрели на итоговый план выполнения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...