powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема соединения двух таблиц (26 и 4 млн строк)
14 сообщений из 39, страница 2 из 2
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40018972
pavifed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
pavifed,

Повторюсь - ваши картинки неинформативны.
Не хотите сами разбираться с ожиданиями (предположительно) - тогда запустите запрос еще раз и покажите актуальный план выполнения в формате sqlplan, а не картинкой.

Приложил файл. Посмотрите, пожалуйста.
...
Рейтинг: 0 / 0
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40018974
pavifed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123
видите же, что другие thread ждут работающего, которому досталось больше.
вам предлагали при maxdop = 1 запускать,
попробуйте снова и посмотрим, что там за ожидания, исключим CXPACKET


за минуту до вашего комментария успел ответить другому участнику:
При использовании OPTION (MAXDOP 1) представление sys.dm_os_waiting_tasks возвращает пустой набор.
...
Рейтинг: 0 / 0
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40018984
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и где тут "актуальных строк столько же, сколько оценочных"?
кривая оценка числа строк, криво же распределил работу между threads.
все ждали одного.
...
Рейтинг: 0 / 0
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40018999
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a вообще планы какие-то урезанные
QueryTimeStats напрочь отсутствует.
...
Рейтинг: 0 / 0
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40019028
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pavifed
Приложил файл.
И каждый по 3 часа выполнялся?

Планы не соответствуют опубликованным картинкам.
И какие-то урезанные. QueryTimeStats может и не быть, ибо появилось в 2017 CU3, а у вас почти что RTM. Но WaitStats появилось в 2016 SP1, а нету.

Откуда планы брали?
...
Рейтинг: 0 / 0
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40019038
pavifed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123,

я прислал выше куцый план, к сожалению. Вот план после выполнения запроса.
...
Рейтинг: 0 / 0
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40019060
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот в некуцем плане есть и нехилый индекс спул
...
Рейтинг: 0 / 0
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40019063
pavifed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123,

Как это лечится? (смущённый смайл)
Есть типовые пути решения?
...
Рейтинг: 0 / 0
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40019072
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pavifed,

попробуйте, там спулирование вроде не для HP добавляется, по сути он должен убрать его из плана.
Код: sql
1.
option (no_performance_spool)
...
Рейтинг: 0 / 0
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40019074
pavifed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff,

Кажется, не помогло. В Live сразу отображается (при option (no_performance_spool))
...
Рейтинг: 0 / 0
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40019090
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pavifed,

кароче ему не хватает индекса на VSheduleItem вида
Код: sql
1.
create index ix on [staging].[VSheduleItem] ([StartDateTime]) include ([EndDateTime])



но делать это на такой большой таблице возможно не камильфо.

у Вас в плане изначальный предикат правого входа это IndexSeek на VScheduleItem по предикату ServicePointId = Scalar Operator((5))
оценка такого предиката возвращает оценочное кол-во строк в 87832.

поскольку потом дополнительно нужно фильтроваться по предикатам неравенства сервер решает построить индекс.
но вот только он считает вполне нормальным что левый вход ему дает набор в 376852 строки и можно столько раз посоздавать индекс.

Можете попробовать заскриптовать оценочный план который не содержит IndexSpool и применить его в виде PlanGuide
...
Рейтинг: 0 / 0
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40019103
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff


кароче ему не хватает индекса на VSheduleItem вида
Код: sql
1.
create index ix on [staging].[VSheduleItem] ([StartDateTime]) include ([EndDateTime])



но делать это на такой большой таблице возможно не камильфо.

да ладно, там девелопер, можно онлайново создать и с компрессией
Код: sql
1.
2.
create index ix on [staging].[VSheduleItem] ([StartDateTime]) include ([EndDateTime])
with(online = on, data_compression = page)
...
Рейтинг: 0 / 0
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40019110
pavifed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123
да ладно, там девелопер, можно онлайново создать и с компрессией
Код: sql
1.
2.
create index ix on [staging].[VSheduleItem] ([StartDateTime]) include ([EndDateTime])
with(online = on, data_compression = page)


Добавил такой индекс. Выполняю запрос, вижу, что по-прежнему используется кластерный индекс pr_id, а не новый ix.
...
Рейтинг: 0 / 0
Проблема соединения двух таблиц (26 и 4 млн строк)
    #40019113
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pavifed,

Перепишите так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
UPDATE ed
SET IsBusySegment = 1 
FROM
    staging.VScheduleItem sps inner hash join
	staging.ServicePointScheduleEveryDay ed ON
			sps.ServicePointId = ed.ServicePointId 
			AND (sps.StartDateTime < ed.EndDateTime) 
			AND (sps.EndDateTime > ed.StartDateTime)
WHERE sps.ServicePointId = 5

Спул уйдет.
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема соединения двух таблиц (26 и 4 млн строк)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]