powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с UNION ALL
21 сообщений из 21, страница 1 из 1
Проблема с UNION ALL
    #39806133
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По отдельности запросы выполняются моментально, а при объединении тормозят.
Типа каждый запрос меньше секунды, а ч-з UNION ALL - 34 секунды выполняется.
У кого-то такое бывало?

Microsoft SQL Server 2008 (SP3) - 10.0.5538.0 (X64) Apr 3 2015 14:50:02 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.0 <X64> (Build 6003: Service Pack 2)
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806163
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если даже написать

Код: sql
1.
2.
3.
4.
5.
select ''
UNION ALL
--2 запрос
select FIO
from ...



время выполнения 33 секунды ((
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806173
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разные запросы могут иметь разный план и разное время выполнения, это нормально.
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806181
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mnbvcx,

планы выполнения надо смотреть
+
у вас не совсем последний сервис-пак
есть другой сервер под рукой попробовать?

почитайте
https://sqlperformance.com/2017/05/sql-plan/union-all-optimization
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806198
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что я сделал не так, если при одиночном запросе такая статистика

Время синтаксического анализа и компиляции SQL Server:
время ЦП = 0 мс, истекшее время = 0 мс.

(затронуто строк: 2)
Таблица "Worktable". Число просмотров 3835, логических чтений 39751, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Worktable". Число просмотров 0, логических чтений 0, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Documents". Число просмотров 4, логических чтений 422, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "refDocumentTypes". Число просмотров 2, логических чтений 53, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Codes". Число просмотров 1, логических чтений 12, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Clients". Число просмотров 5, логических чтений 761, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "refClientTypes". Число просмотров 1, логических чтений 2, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "refPersonTypes". Число просмотров 1, логических чтений 2, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "refSex". Число просмотров 1, логических чтений 2, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "refClientStatusTypes". Число просмотров 1, логических чтений 2, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "refLegalFormTypes". Число просмотров 1, логических чтений 2, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Address". Число просмотров 3, логических чтений 843, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Contracts". Число просмотров 0, логических чтений 2, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.

Время работы SQL Server:
Время ЦП = 171 мс, затраченное время = 171 мс.

А если добавить к нему выше select '' UNION ALL, то какой-то ад наступает

Время синтаксического анализа и компиляции SQL Server:
время ЦП = 383 мс, истекшее время = 383 мс.

(затронуто строк: 3)
Таблица "Worktable". Число просмотров 2211639, логических чтений 16717829, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "refDocumentTypes". Число просмотров 1, логических чтений 1269, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Clients". Число просмотров 579, логических чтений 130750, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Documents". Число просмотров 4, логических чтений 1614, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Codes". Число просмотров 1418, логических чтений 17497, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "refClientTypes". Число просмотров 1, логических чтений 2, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "refPersonTypes". Число просмотров 1, логических чтений 2, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "refSex". Число просмотров 1, логических чтений 2, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "refClientStatusTypes". Число просмотров 1, логических чтений 2, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "refLegalFormTypes". Число просмотров 1, логических чтений 2, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Address". Число просмотров 3, логических чтений 843, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Contracts". Число просмотров 0, логических чтений 2, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.

Время работы SQL Server:
Время ЦП = 30795 мс, затраченное время = 31547 мс.
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806201
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Содержимое планов запросов не раскрыто.
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806208
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей АлексеевичСодержимое планов запросов не раскрыто.
Как файл *.sqlplan приложить?
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806210
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mnbvcxЧто я сделал не так...

планы разные строятся - видно даже по списку таблиц
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806233
Glebanski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mnbvcx,

Попробуйте JOIN-om
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806270
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mnbvcx,

вот ради интереса - как повлияет, если после запроса поставить
option (NO_PERFORMANCE_SPOOL, recompile)
или
option (NO_PERFORMANCE_SPOOL)

вроде бы разницы в последствиях не должно быть, но...

у меня примерно такие же непонятности были недавно
https://www.sql.ru/forum/1311749/mozhno-li-optimizatoru-predpisat-sdelat-vremennuu-tablicu

еще запросто один запрос выполняется быстрее параллельно, а второй - непараллельно
но объединенный запрос сервер крутит весь или так или так
тоже может влиять по идее, хотя у меня влияние было несущественное вроде бы, а роляла появляющаяся буферизация
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806281
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Причем если вместо селекта из view вставить его определение, то Union ALL отрабатывает моментально
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806292
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А попробуй поменять селекты местами.
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806294
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183А попробуй поменять селекты местами.
Те же 34 секунды(
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806299
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NO_PERFORMANCE_SPOOL для 17ого сервера, сорри
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806314
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Капец, на 2012-м запрос на той же бд отработал за меньше секунды (((

Microsoft SQL Server 2012 (SP4) (KB4018073) - 11.0.7001.0 (X64) Aug 15 2017 10:23:29 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806319
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичСодержимое планов запросов не раскрыто.
и не будет, похоже
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806522
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komradГавриленко Сергей АлексеевичСодержимое планов запросов не раскрыто.
и не будет, похоже
Пока, по совету камрада komrad, рассчитываю на магию последнего сервис-пака.
Может завтра случится.
Вы же видели, что на 2012 всё ок.
mnbvcx на 2012-м тот же запрос на той же бд отработал за меньше секунды.

Microsoft SQL Server 2012 (SP4) (KB4018073) - 11.0.7001.0 (X64) Aug 15 2017 10:23:29 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806646
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mnbvcx, сегодня после SP4 стало хуже, Время ЦП = 52838 мс, затраченное время = 53966 мс.

В аттачменте 2 плана в архиве.
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806657
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mnbvcxmnbvcx, сегодня после SP4 стало хуже, Время ЦП = 52838 мс, затраченное время = 53966 мс.

В аттачменте 2 плана в архиве.

апдейтните статистику
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806671
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинmnbvcxmnbvcx, сегодня после SP4 стало хуже, Время ЦП = 52838 мс, затраченное время = 53966 мс.

В аттачменте 2 плана в архиве.

апдейтните статистику

Совет не верен.

Перепишите свой запрос "по-человечески".
Чтобы у оптимизатора не было выбора.
...
Рейтинг: 0 / 0
Проблема с UNION ALL
    #39806747
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mnbvcx,

Само-собой планы разные.
NL для Contracts без union all выполняется с outer reference, с union all без оного.
В результате все ваши рекурсивные CTE из vwУполномоченноеЛицоЮР лопатятся по полной программе.

Честно говоря, лично мне лениво разбираться из-за чего так происходит.

Попробуйте переписать как-то так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select ''

UNION ALL

SELECT [ФИО]
	FROM
     Clients.dbo.Contracts x cross apply
     (
      select ... from [Clients].[dbo].[vwУполномоченноеЛицоЮР]
      where
       clientid = x.clientid and
		and (([КодТипаКлиента] = 20 and ДоляУК >= 20) OR ([КодТипаКлиента] = 21 and ДоляУК >= 25) OR ([КодТипаКлиента] = 17))
     ) z
where
  x.ContractID = (1969 +10000 - 10000)  
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с UNION ALL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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