|
Оператор ВЫБОР в условии запроса | ☑ | ||
---|---|---|---|---|
0
seraf
06.12.19
✎
16:23
|
Подскажите, если у меня есть ВЫБОР на дату поля запроса (NULL заменяю датой документа) и в условии нужен отбор по этой дате. Поместив в ГДЕ конструкцию ВЫБОР, скорость не упадет до уровня как будто я анализирую все поля?
|
|||
1
Роспатнюк Сергей Сер
06.12.19
✎
16:27
|
(0) про null и дату документа не понятно,ну а в конструкции ГДЕ много раз применял ВЫБОР КОГДА ТОГДА и тормозов не видел
|
|||
2
Роспатнюк Сергей Сер
06.12.19
✎
16:31
|
(0) если смущает null создай пакет запросов в первом запросе заменяй null в втором делай отбор из ВТ
|
|||
3
seraf
06.12.19
✎
16:31
|
ну это нормально если поле запроса получается через ВЫБОР и условие на него накладывать с тем же оператором
мне что-то глаз режет, но оно нужно для связи с документом на лету |
|||
4
Роспатнюк Сергей Сер
06.12.19
✎
16:32
|
(3) выкладывай запрос
|
|||
5
scanduta
06.12.19
✎
16:32
|
(0) разве что на очень больших объемах, в общем то не особо критично
но правильней будет поместить в ВТ |
|||
6
seraf
06.12.19
✎
16:41
|
ВЫБРАТЬ
ТЧДокумента.Ссылка КАК Ссылка, ТЧДокумента.НомерСтроки КАК НомерСтроки, ТЧДокумента.Номенклатура КАК Номенклатура, ТЧДокумента.УникальныйИдентификатор РСУслуги.Коэффициент КАК Коэффициент, ВЫБОР КОГДА РСУслуги.ДатаИВремя = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА ТЧДокумента.Ссылка.Дата ИНАЧЕ РСУслуги.ДатаИВремя КОНЕЦ КАК ДатаИВремя ИЗ Документ.Заказ.Услуги КАК ТЧДокумента ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Услуги КАК РСУслуги ПО ТЧДокумента.УникальныйИдентификатор = РСУслуги.УникальныйИдентификатор ГДЕ ТЧДокумента.НомерСтроки.Ссылка.Проведен = ИСТИНА ////такое сильно смущает И (ВЫБОР КОГДА РСУслуги.ДатаИВремя = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА ТЧДокумента.Ссылка.Дата ИНАЧЕ РСУслуги.ДатаИВремя КОНЕЦ) МЕЖДУ &ДатаНач и &ДатаКон |
|||
7
Fragster
гуру
06.12.19
✎
16:42
|
(6) это будет тормозить
|
|||
8
seraf
06.12.19
✎
16:42
|
да объем большой, мне точно надо чтобы условие по дате сразу резалось, а не выполнялось как полный запрос с фильтром в конце
|
|||
9
seraf
06.12.19
✎
16:43
|
(7) а как тут быть?
|
|||
10
Fragster
гуру
06.12.19
✎
16:43
|
объединение двух запросов
|
|||
11
seraf
06.12.19
✎
16:46
|
(10) каких двух запросов? у меня таких как в примере еще несколько паравозиком объединяется по другим документам с аналогичными условием ГДЕ
|
|||
12
FIXXXL
06.12.19
✎
16:47
|
(8) оно уже как "полный запрос с фильтром в конце" работает
|
|||
13
Роспатнюк Сергей Сер
06.12.19
✎
16:49
|
где же null ? )
|
|||
14
Fragster
гуру
06.12.19
✎
16:49
|
(11)
один с РСУслуги.ДатаИВремя = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) другой с РСУслуги.ДатаИВремя <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) |
|||
15
seraf
06.12.19
✎
16:50
|
(12) мне тоже так кажется. а как перефразировать чтобы Дата РС выступала условием отсечения строк ТЧ и при этом еще и заполнялась согласно ВЫБОР
|
|||
16
seraf
06.12.19
✎
16:50
|
(13) когда пустая дата у РС, подменяется на дату документ, это имел в виду
|
|||
17
Роспатнюк Сергей Сер
06.12.19
✎
16:52
|
(16) пустая дата не null иначе можно было бы использовать ЕСТЬNULL что и хотел предложить а тут пустые даты ))
|
|||
18
seraf
06.12.19
✎
16:55
|
(14) пока не очень уловил, сделать две таблицы РС, одна с заполненной датой, вторая с пустой, на этом мысль обрывается)
(17) да пустая дата.. |
|||
19
Роспатнюк Сергей Сер
06.12.19
✎
16:56
|
(11) ну и пиши ОБЪЕДИНИТЬ ВСЕ между запросов сколько нужно раз главное что бы поля в ВЫБРАТЬ были одинаковыми
|
|||
20
seraf
06.12.19
✎
16:59
|
проще говоря мне в запросе нужен отбор по дате регистра или по дате документа, если первая пустая. и чтобы это быстро работало в случае маленького интервала, а не перебирались все таблицы.
(19) да я то написал, проблема в том что ВЫБОР в ГДЕ делает запрос полным (вроде как) |
|||
21
НЕА123
06.12.19
✎
17:03
|
нельзя засунуть условия ГДЕ в ПО?
|
|||
22
Роспатнюк Сергей Сер
06.12.19
✎
17:04
|
(20) как я понял от ВЫБОРА в ГДЕ можно избавится (14) у тебя будет по два объединенных запрос в одном будет ГДЕ = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) в другом <>
|
|||
23
Роспатнюк Сергей Сер
06.12.19
✎
17:06
|
(21) у тебя есть консоль запросов ?
|
|||
24
Роспатнюк Сергей Сер
06.12.19
✎
17:08
|
(21) вопорос не к вам случайно тыркнул он для (20)
|
|||
25
seraf
06.12.19
✎
17:09
|
(21) в СКД делаю, куда засунуть?
(22) и что получится, первый запрос соединяет ТЧ с РС в котором только заполненные даты РС, отбор по ней, второй отбор соединяет ТЧ с пустыми датами РС, отбор по датам ТЧ и эти два быстрее будут? ну попробую, возможно, мерси.. (23) есть) |
|||
26
НЕА123
06.12.19
✎
17:13
|
.... ПО ТЧДокумента.УникальныйИдентификатор = РСУслуги.УникальныйИдентификатор И ТЧДокумента.НомерСтроки.Ссылка.Проведен = ИСТИНА ////такое сильно смущает И (ВЫБОР КОГДА РСУслуги.ДатаИВремя = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА ТЧДокумента.Ссылка.Дата ИНАЧЕ РСУслуги.ДатаИВремя КОНЕЦ) МЕЖДУ &ДатаНач и &ДатаКон |
|||
27
Роспатнюк Сергей Сер
06.12.19
✎
17:18
|
ВЫБРАТЬ
ТЧДокумента.Ссылка КАК Ссылка, ТЧДокумента.НомерСтроки КАК НомерСтроки, ТЧДокумента.Номенклатура КАК Номенклатура, ТЧДокумента.УникальныйИдентификатор РСУслуги.Коэффициент КАК Коэффициент, ВЫБОР КОГДА РСУслуги.ДатаИВремя = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА ТЧДокумента.Ссылка.Дата ИНАЧЕ РСУслуги.ДатаИВремя КОНЕЦ КАК ДатаИВремя ПОМЕСТИТЬ ВТ ИЗ Документ.Заказ.Услуги КАК ТЧДокумента ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Услуги КАК РСУслуги ПО ТЧДокумента.УникальныйИдентификатор = РСУслуги.УникальныйИдентификатор ГДЕ ТЧДокумента.НомерСтроки.Ссылка.Проведен = ИСТИНА ; ////////////////////////////////////////// ВЫБРАТЬ ВТ.Ссылка КАК Ссылка, ВТ.НомерСтроки КАК НомерСтроки, ВТ.Номенклатура КАК Номенклатура, ВТ.УникальныйИдентификатор ВТ.Коэффициент КАК Коэффициент, ВТ.ДатаВремя КАК ДатаИВремя ИЗ ВТ КАК ВТ ГДЕ ДатаИВремя МЕЖДУ ДатаНач И ДатаКон вот так точно будет норм |
|||
28
seraf
06.12.19
✎
17:22
|
(27) какой же там норм будет, если я сначала считаю все данные, что займет кучу времени
по рецепту (22) пока пробую переделать |
|||
29
Роспатнюк Сергей Сер
06.12.19
✎
17:25
|
ограничь с низу в первом запросе за последние допустим два года или три или четыре 1млн строк будет для sql доли секунд
|
|||
30
Роспатнюк Сергей Сер
06.12.19
✎
17:26
|
(28) тебе же не нужны данные 10 летней давности если они есть конечно
|
|||
31
seraf
06.12.19
✎
17:28
|
(29) да фиг там, я до этого тему создавал, аварийно отчет падает при 300к строк и работает пару часов, вроде только с отбором работать будут
|
|||
32
seraf
06.12.19
✎
17:30
|
всё, вроде норм работает отбор по датам, спасибо за помощь)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |