Производительность charindex в SQL Server 2005

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

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 секунд. Есть идеи, почему?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
1 055
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Результирующий EP показывает сканирование кластерного индекса для предложения where.

Chris 26.11.2008 16:55

Ахахахаха, мне не хватало ключевого индекса по идентификатору сеанса. Я думал, что это первичный ключ, но ошибался. Спасибо!

Chris 26.11.2008 16:57

Другие вопросы по теме