Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / 2008 (не R2) и варианты замены CROSS APPLY / 7 сообщений из 7, страница 1 из 1
16.02.2018, 18:18
    #39603272
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2008 (не R2) и варианты замены CROSS APPLY
Проблема.

Для удобства модификации кода предпочитаю использовать CROSS APPLY:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT
FROM
<таблицы>
CROSS APPLY (
  SELECT
  WHERE
     <условия>
  UNION ALL
  SELECT
  WHERE
     <условия>
  UNION ALL
  +100500 различных вариантов
)


Столкнулся с тем, что сервер дольше прожевывает такие куски кода, чем
Код: sql
1.
2.
3.
SELECT FROM <таблицы> WHERE <условия> 
UNION ALL
SELECT FROM <таблицы> WHERE <другие условия>


Судя по всему IO на сервере явно лучше CPU.
Но апгрейд железа и софта на сервере - вне моей области ответственности.

Какие варианты в моем случае?
Переписывать это дело на повторяющиеся куски?

Выбирать все нужные поля в промежуточную таблицу?

Плюнуть на свое радение за производительность - пусть голова болит у админов сервера - и продолжать использовать удобный инструмент?

хитрожопый макак (c) Glory
...
Рейтинг: 0 / 0
16.02.2018, 18:35
    #39603280
2008 (не R2) и варианты замены CROSS APPLY
Руслан Дамирович,

сдается, тут "экономия на спичках". Всё одно нечитабельная гирлянда юнионов получилась. Не факт, что через APPLY оно понятнее и удобнее для сопровождения. А вот серверу остается меньше вариантов для маневра при построении плана запроса...
...
Рейтинг: 0 / 0
16.02.2018, 19:11
    #39603298
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2008 (не R2) и варианты замены CROSS APPLY
Добрый Э - ЭхВсё одно нечитабельная гирлянда юнионов получилась.
Вот так вот сходу, не видя кода, делаем выводы!
Конечно же та же гирлянда юнионов разбавленная FROM будет однозначно читабельнее! :)
Э - Эх...

Добрый Э - Эхсдается, тут "экономия на спичках"
Если бы там "спички" были, я бы не полез задавать вопрос.
Время исполнения снижается в зависимости от количества SELECT в APPLY - с 10-20 минут до 3-5.

Возможно, нужно еще раз планы покурить да поиграться с индексами. Но там по большей части временные таблицы. И единственный вариант - больше временных таблиц!

Но такая лень. Вот и борюсь с профессиональной совестью как могу - вопросы на форуме задаю; говорю себе, что нету времени; пусть админы сервер модернизируют; и вообще я разработчик, мне так удобнее.
...
Рейтинг: 0 / 0
16.02.2018, 19:44
    #39603308
2008 (не R2) и варианты замены CROSS APPLY
Руслан Дамирович,

тогда нужно показывать репрезентативные тест-кейсы. со структурой таблиц, схемой индексации, составом и распределением данных, с планами и статистикой выполнения, а не упрощенную до сферического коня в вакууме модель сложившейся ситуации.
...
Рейтинг: 0 / 0
16.02.2018, 20:02
    #39603318
2008 (не R2) и варианты замены CROSS APPLY
Руслан Дамирович,

авторСтолкнулся с тем, что сервер дольше прожевывает такие куски кода, чем
Фигли ты хотел если код вообще разный. "Прожевыванием" ни железо, ни СУБД не занимаются. Железо, например, читает с диска или пишет в tempdb, или что-то вычисляет. СУБД, например, анализирует запрос, строит план выполнения и выполняет оказавшиеся в нем логические и физические операции. Туда и надо смотреть.

Например, второй вариант попадает в индексы. А первый - нет. К слову, и результат может быть плюс-минус миллиард записей туда-сюда. Куски кода вообще разные.
...
Рейтинг: 0 / 0
19.02.2018, 08:37
    #39603918
Mike_za
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2008 (не R2) и варианты замены CROSS APPLY
Завернуть общую часть в cte? И Использовать ее в юнионах
...
Рейтинг: 0 / 0
19.02.2018, 11:59
    #39604057
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2008 (не R2) и варианты замены CROSS APPLY
Добрый Э - Эхтогда нужно показывать репрезентативные тест-кейсы. со структурой таблиц, схемой индексации, составом и распределением данных, с планами и статистикой выполнения, а не упрощенную до сферического коня в вакууме модель сложившейся ситуации.
запроса и актуального плана хватит?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / 2008 (не R2) и варианты замены CROSS APPLY / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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