Проблема со скоростью выполнения запроса.

1. andrei_vashilko 04.03.24 15:08 Сейчас в теме
Стоит старая УПП1.3, платформа 8.2.15.294 и Microsoft SQL 2005
В какой то момент стал медленно выполняться отчет на СКД, когда установлен отбор по характеристике. На реальной базе вообще не выполняется. НО если настроить отбор через еще одну точку: вместо ВидПриемки = "Приемка1", установить ВидПриемки.Код = "1", то отчет работает также быстро как и раньше.
Полез смотреть в профайлер. Планы запросов разные и отличаются достаточно сильно. Ну это нормально. Но что вызвало у меня недопонимаение так это то, что для "быстрого" запроса Estimated SubStree Cost для последнего оператора показывает в 300 единиц в событии Showplan xml profile, а для "медленного" ESC = 12 единиц! Но уже в SQL:BatchCompleted "duration" у "быстрого" = 3000, у "медленного" = 300000.
Получается, что SQL Server предполагает, что один запрос будет быстрее другого в 25 раз, а получается совершенно наоборот и разница колоссальна -- 100 раз.
Непонятно, что делать, чтобы запрос работал одинаково хорошо. Может у кого нибудь есть мысли на эту тему или сталкивались с таким?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 04.03.24 16:22 Сейчас в теме
5. andrei_vashilko 04.03.24 16:36 Сейчас в теме
(2) Каждую ночь обновляется статистика
11. Дмитрий74Чел 234 11.03.24 15:23 Сейчас в теме
(5) есть такая беда: статистика обновляется по порции данных. Порция может включать нерепрезентативную выборку.
Тогда статистика хоть и свежая - но некорректная. Попробуйте выполнить wirh fullscan для проблемной таблицы.
Если поможет то придется выключить автообновление статистики, оставив только запуск по расписанию.
3. spacecraft 04.03.24 16:25 Сейчас в теме
(1)
Стоит старая УПП1.3, платформа 8.2.15.294 и MySQL 2005

Вот реально подняли на MySQL?
4. пользователь 04.03.24 16:35
Сообщение было скрыто модератором.
...
6. starik-2005 3039 04.03.24 18:28 Сейчас в теме
(1) Была статейка одна от софтпоинта. Они там нашли, что если соединять по характеристикам без номенклатуры, то сильно проседала производительность, т.к. соединение не попадало в индекс. У Вас тут то же самое - не попадает в индекс отбор. Простое решение - всегда добавлять в отбор номенклатуру к характеристике.
7. andrei_vashilko 05.03.24 09:57 Сейчас в теме
(6)
е попадает в индекс отбор. Простое решение - всегда добавлять в отбор номенклатуру к характер

Есть такое. В профайлере видно, что идет Индекс скан вместо идекс сика. Но это тоже странно, так как свойство хоть и второе измерение в РС "Значения свойст номенклатуры", но имеет флажок ведущее и в структуре хранения данных видно, что создан индекс по этому измерению.
Но вопрос не в том, что запрос медленно работает. А в том, что раньше работал быстро, а теперь стал медленно. Кроме того странная ситуация, что скл сервер предполагает, что "медленный" запрос должен работать быстрее "быстрого"
8. starik-2005 3039 05.03.24 10:16 Сейчас в теме
(7)
должен работать быстрее
И? Попробовал номенклатуру добавить в отбор? Помогло?
9. Дмитрий74Чел 234 11.03.24 13:08 Сейчас в теме
(7)
раньше работал быстро, а теперь стал медленно
Типичная ситуация при росте таблицы. Вчера в таблице было 99 строк и план запроса А, а сегодня 100 строк и sql строит уже совсем другой план.
скл сервер предполагает, что "медленный" запрос должен работать быстрее "быстрого"
это ошибка планировщика, скорее всего из-за статистики
andrei_vashilko; +1 Ответить
10. andrei_vashilko 11.03.24 13:46 Сейчас в теме
12. VmvLer 11.03.24 16:00 Сейчас в теме
Если отчет самописный, то первым пакетом создать ВТ отбора номенклатуры
относительно "легкой" таблицы Справочник.Номенклатура

Выбрать 
Т.Ссылка КАК ТоварыОтбора // НЕ задавать синоним поля как Номенклатура, иначе СКД раскидает отборы далее по пакетам согласно своим предпочтениям.
....
ПОМЕСТИТЬ ВтТоварыОтбора
Из Справочник.Номенклатура КАК Т
{ ... тут поля отборов, в том числе по характеристикам и пр...}
;
// далее пакеты логики отчета, в которые вставляем отбор по Номеклатуре как
// Где Т.Номенклатура В (Выбрать Т.ТоварыОтбора Из ВтТоварыОтбора КАК Т)
Показать


Такой прием избавит СКД от излишнего рвения, когда в таблицы оборотных регистров
вставляются тяжелые фильтры В ИЕРАРХИИ, по характеристикам и т.п.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот