|
Подскажите с запросом | ☑ | ||
|---|---|---|---|---|
|
0
Ильф
04.03.25
✎
13:44
|
ВЫБРАТЬ ВремяВыполненияСтационар.Период КАК Период, ВремяВыполненияСтационар.Регистратор КАК Регистратор, ВремяВыполненияСтационар.УникальныйИдентификаторНазначения КАК УникальныйИдентификаторНазначения, ВремяВыполненияСтационар.ЗапланированноеВремяВыполненияНазначения КАК ЗапланированноеВремяВыполненияНазначения, ВремяВыполненияСтационар.СтатусНазначения КАК СтатусНазначения, ВремяВыполненияСтационар.РазоваяДозаИсполнено КАК РазоваяДозаИсполнено, ВремяВыполненияСтационар.Комментарий КАК Комментарий, ВремяВыполненияСтационар.ВремяВыполненияНазначения КАК ВремяВыполненияНазначения, ВремяВыполненияСтационар.Исполнитель КАК Исполнитель ПОМЕСТИТЬ втЛистВрачебныхНазначенийВремяВыполненияСтационар ИЗ РегистрСведений.ЛистВрачебныхНазначенийСтационар.СрезПоследних КАК ЛистВрачебныхНазначений ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЛистВрачебныхНазначенийВремяВыполненияСтационар.СрезПоследних(, НАЧАЛОПЕРИОДА(ЗапланированноеВремяВыполненияНазначения, ДЕНЬ) = &Дата) КАК ВремяВыполненияСтационар ПО (ВремяВыполненияСтационар.УникальныйИдентификаторНазначения = ЛистВрачебныхНазначений.УникальныйИдентификаторНазначения) И (ВЫБОР КОГДА ЛистВрачебныхНазначений.МедицинскаяКарта.ДатаЗакрытия = ДАТАВРЕМЯ(1, 1, 1) ТОГДА ИСТИНА ИНАЧЕ ВремяВыполненияСтационар.ЗапланированноеВремяВыполненияНазначения <= ЛистВрачебныхНазначений.МедицинскаяКарта.ДатаЗакрытия ИЛИ ВремяВыполненияСтационар.СтатусНазначения = ЗНАЧЕНИЕ(Перечисление.СтатусыЛекарственногоНазначения.Выполнено) КОНЕЦ) И ВремяВыполненияСтационар.ЗапланированноеВремяВыполненияНазначения >= НАЧАЛОПЕРИОДА(&ДатаВремяНачала, МИНУТА) И ВремяВыполненияСтационар.ЗапланированноеВремяВыполненияНазначения < НАЧАЛОПЕРИОДА(&ДатаВремяОкончания, МИНУТА) ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_НазначенияНаТекущуюДату КАК ВТ_НазначенияНаТекущуюДату ПО ЛистВрачебныхНазначений.МедицинскаяКарта = ВТ_НазначенияНаТекущуюДату.МедицинскаяКарта с такими параметрами выполняется 40 сек Запрос111.УстановитьПараметр("ДатаВремяНачала", '20250301');
Запрос111.УстановитьПараметр("ДатаВремяОкончания", '202503010830'); а вот с такими - 1 сек Запрос111.УстановитьПараметр("ДатаВремяНачала", '20250301');
Запрос111.УстановитьПараметр("ДатаВремяОкончания", '202503012330'); в чем прикол? как оптимизировать? |
|||
|
1
Хрусталев
04.03.25
✎
13:38
|
Я бы посмотрел трассировку в профайлере
|
|||
|
2
Мультук
гуру
04.03.25
✎
13:42
|
(0)
0) >>с такими параметрами выполняется 40 сек Данные загнали в кэш >>а вот с такими - 1 сек Скушали данные из кэша 1) Срезы последних наверное стоит загнать в ВТ с индексацией по "МедицинскаяКарта" 2) .СрезПоследних(, ЗапланированноеВремяВыполненияНазначения МЕЖДУ &ДатаНачалаДня_Дата и &ДатаКонецДняДата ) |
|||
|
3
Ильф
04.03.25
✎
13:48
|
(2) - запрос стабильно выполняется 40 или 1 секунду - т.е. кэш под большим вопросом
интересно именно почему такое поведение (запрос оптимизировал - теперь по 1 секунде всегда) |
|||
|
4
Ильф
04.03.25
✎
13:50
|
+(3) вынес ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_НазначенияНаТекущуюДату КАК ВТ_НазначенияНаТекущуюДату в отдельную ВТ
|
| Форум | Правила | Описание | Секции | Поиск |