Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос про курсоры и динамическеий SQL. Ваше мнение  [new]
Oomel
Member

Откуда:
Сообщений: 22
Всех приветствую.

Насколько, по вашему мнению, оправдано использование динамического sql в курсоре, если при работе с таблицей, насчитывающей около 10кк записей, я получаю прирост производительности примерно на 78%, по сравнению с обычной выборкой.

Курсор построен по таблице (предположим TRULES), хранящей правила выгрузки.
Выборка осуществляется из таблицы (TSOURCE), хранящей данные.

В таблице RULES количество записей вряд ли будет превышать 3,5к (на данный момент 2829)
Таблица TSOURCE толстеет каждый год примерно на 4кк.

Суть в том, что в зависимости от значения полей TRULES можно сформировать различные запросы к TSOURCE, максимально задействующие индексы.

Если же делать выборку за один запрос, то приходится использовать вычисления в join по полям таблицы TRULES, т.к. она содержит только шаблоны ограничений.
Например, поле TRULES.FIELD1 может содержать значения {'%'(процент),variable(случайное значение, может быть = '')} и теперь при соединении таблиц нужно смотреть: Если TRULES.FIELD1 = '%' Тогда любое значение Иначе TRULES.FIELD1.
LIKE отпадает, т.к. в таблице TRULES есть поля с типами int и binary(8), по которым тоже нужно ограничивать TSOURCE.

При таком подходе выборка из 1кк записей производится 02:42, но за один запрос.
С курсором за 00:37, но за 2829 запросов.
15 фев 18, 09:51    [21192906]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про курсоры и динамическеий SQL. Ваше мнение  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Oomel

При таком подходе выборка из 1кк записей производится 02:42, но за один запрос.
С курсором за 00:37, но за 2829 запросов.

вы просто не умеете писать запросы,а курсор с динамикой внутри - вообще без коментариев
15 фев 18, 10:22    [21193025]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про курсоры и динамическеий SQL. Ваше мнение  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Maxx
Oomel
При таком подходе выборка из 1кк записей производится 02:42, но за один запрос.
С курсором за 00:37, но за 2829 запросов.

вы просто не умеете писать запросы,а курсор с динамикой внутри - вообще без коментариев
А где запрос-то? Чего-то я не вижу. Только бла-бла-бла. Гуманитарий!
15 фев 18, 10:30    [21193054]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про курсоры и динамическеий SQL. Ваше мнение  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Если не ошибаюсь, то запрос для курсора всегда будет перекомпилироваться, по этому динамика там или нет не важно.
А так оба пункта соответсвуют аксиоме Эскобара :)
15 фев 18, 10:34    [21193068]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить