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

Откуда: Москва
Сообщений: 19
Всем привет,
собираюсь немного поработать с одним огромным запросом.. вернее он так себе 5-7 таблиц, около того.. выбирает там данные.
Никаких группировок, только соединения и векторный отбор данных.
Почему то стал тормозить. раньше летал.. он и сейчас быстро отбирает, но как только активирую отбор по дате between A and B - скорость падает резко.. Программа по Таймаут отваливается.

Просьба как-то сориентировать пока..
Вот думаю, скорее всего Дата в базе хранится в Тиках? Тогда вроде и не должно быть проблем при больше-меньше.

Подскажите, пожалуйста, наверняка это уже задача бородатая..
4 апр 19, 13:08    [21852557]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помостчь  [new]
londinium
Member

Откуда: Киев
Сообщений: 1075
Бригадир,
в такой постановке задача, скорее, уникальная
4 апр 19, 13:13    [21852568]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помостчь  [new]
aleks222
Member

Откуда:
Сообщений: 541
londinium
Бригадир,
в такой постановке задача, скорее, уникальная

Это уникально-бородатая задача о поиске кнопки "сделать как я хачу".
4 апр 19, 15:36    [21852814]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помостчь  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28168
Бригадир
он и сейчас быстро отбирает, но как только активирую отбор по дате between A and B
Либо нет индекса, либо неправильная статистика
4 апр 19, 21:16    [21853263]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помостчь  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2208
Бригадир
Подскажите, пожалуйста, наверняка это уже задача бородатая..
У меня машина не заводится, большая такая... вернее так себе 4 колеса всего, около того... обычно ездит. Никакой тонировки, белого цвета. Почему то перестала заводиться, раньше заводилась.., как только ключ зажигания поворачиваю - не заводится.
Подскажите, пожалуйста, наверняка это уже задача бородатая..
6 апр 19, 00:46    [21854518]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помостчь  [new]
Deff
Member

Откуда: Пермь
Сообщений: 18323
Бригадир
Всем привет,
собираюсь немного поработать с одним огромным запросом.. вернее он так себе 5-7 таблиц, около того.. выбирает там данные.
Никаких группировок, только соединения и векторный отбор данных.
Почему то стал тормозить. раньше летал.. он и сейчас быстро отбирает, но как только активирую отбор по дате between A and B - скорость падает резко.. Программа по Таймаут отваливается.

Просьба как-то сориентировать пока..
Вот думаю, скорее всего Дата в базе хранится в Тиках? Тогда вроде и не должно быть проблем при больше-меньше.

Подскажите, пожалуйста, наверняка это уже задача бородатая..
Сервер без условий может пойти по пути hash или merge join.
А с условиями может уйти в loop join.
Принудительное inner merge join может помочь.

Это поможет, если у вас не очень хороший запрос, и я телепат.
6 апр 19, 07:55    [21854549]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помостчь  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 693
Бригадир
Вот думаю, скорее всего Дата в базе хранится в Тиках? Тогда вроде и не должно быть проблем при больше-меньше.


Вот это вообще не понял. Что за "Тики" такие? И почему, если "Дата" в них хранится то не должно быть проблем при больше-меньше?
6 апр 19, 20:04    [21854814]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помостчь  [new]
982183
Member

Откуда: VL
Сообщений: 2722
А что такое "векторный отбор данных"?
Гугл ничего не знает....
7 апр 19, 09:22    [21854979]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помостчь  [new]
Сруль.
Member

Откуда:
Сообщений: 92
Добавляешь условие и вдруг быстрота падает.
Бывает.
Первый шаг, если, как обычно, по тупому, то
берёшь отточенный, быстро работающий селект в скобки,
делаешь из него виртуальную таблицу, назовём её Т. Типа так:

select *
from
(select a from [table]) as T
where T.a between 1 and 3

Даёте селекту пройти по налаженной лыжне,
а затем, бросаете лассо на то, что осталось.
Иногда помогает.
10 апр 19, 12:25    [21858160]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помостчь  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2208
Сруль.
Добавляешь условие и вдруг быстрота падает.
Бывает.
Первый шаг, если, как обычно, по тупому, то
берёшь отточенный, быстро работающий селект в скобки,
делаешь из него виртуальную таблицу, назовём её Т. Т
Иногда помогает.
Серверу пофигу на ваши скобки. Это не виртуальная таблица а подзапрос. Тот же самый эффект (никакой) будет если использовать CTE.
Единственное почему может иногда помогать так это потому что это новый запрос и сервер его рекомпилирует и в редких случаях может создать план получше.
10 апр 19, 22:25    [21858826]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помостчь  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28168
Mind
Серверу пофигу на ваши скобки. Это не виртуальная таблица а подзапрос. Тот же самый эффект (никакой) будет если использовать CTE.
В случае больших запросов оптимизатор не успевает перебрать все варианты, и тогда изменение пороядка записи может сыграть свою роль.
У ТС 5-7 таблиц, наверное, это ещё не очень много для такого эффекта (вроде от 8ми), но тем не менее, в общем случае может помочь.
11 апр 19, 10:50    [21859051]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить