![]() |
![]() |
![]() |
|
Помогите оптимизировать запрос! | ☑ | ||
---|---|---|---|---|
0
mzelensky
13.10.11
✎
11:29
|
Доброго всем! Можно ли как-то ускорить/оптимизировать выполнение этого запроса:
ВЫБРАТЬ ЗаказПокупателя.Ссылка КАК Документ, ЗаказПокупателя.Контрагент КАК Контрагент, ЗаказПокупателя.СуммаДокумента КАК Сумма, ИСТИНА КАК Отметка ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя ГДЕ ЗаказПокупателя.Проведен = ИСТИНА И (НЕ ЗаказПокупателя.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ ВыгруженныеДокументыСрезПоследних.ВыгруженныйДокумент КАК ВД ИЗ РегистрСведений.ВыгруженныеДокументы.СрезПоследних(, ВыгруженныйДокумент ССЫЛКА Документ.ЗаказПокупателя) КАК ВыгруженныеДокументыСрезПоследних)) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПосещениеКлиента.Ссылка, ПосещениеКлиента.Контрагент, 0, ИСТИНА ИЗ Документ.ПосещениеКлиента КАК ПосещениеКлиента ГДЕ ПосещениеКлиента.ПометкаУдаления = ЛОЖЬ И (НЕ ПосещениеКлиента.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ ВыгруженныеДокументыСрезПоследних.ВыгруженныйДокумент КАК ВД ИЗ РегистрСведений.ВыгруженныеДокументы.СрезПоследних(, ВыгруженныйДокумент ССЫЛКА Документ.ПосещениеКлиента) КАК ВыгруженныеДокументыСрезПоследних)) УПОРЯДОЧИТЬ ПО Документ, Контрагент АВТОУПОРЯДОЧИВАНИЕ |
|||
1
Fragster
гуру
13.10.11
✎
11:30
|
да
|
|||
2
mikecool
13.10.11
✎
11:30
|
1) внутреннее соединение ВД по не
2) попробовать ВТ и 1) )) |
|||
3
mzelensky
13.10.11
✎
11:31
|
((2) думаешь соединение будет быстрее, чем "ГДЕ" ?!
|
|||
4
Maxus43
13.10.11
✎
11:31
|
И (НЕ ЗаказПокупателя.Ссылка В
(ВЫБРАТЬ РАЗЛИЧНЫЕ ВыгруженныеДокументыСрезПоследних.ВыгруженныйДокумент КАК ВД ИЗ РегистрСведений.ВыгруженныеДокументы.СрезПоследних(, ВыгруженныйДокумент ССЫЛКА Документ.ЗаказПокупателя) КАК это в ВТ или просто соединение с ней, а не в условие ГДЕ |
|||
5
mikecool
13.10.11
✎
11:32
|
(3) смотря какое соединение, но обычно да
|
|||
6
mzelensky
13.10.11
✎
11:34
|
(4) а смысл ее в ВТ запихивать??? я данные всего 1 раз беру!
с соединением попробую |
|||
7
mzelensky
13.10.11
✎
11:35
|
просто дело в том, что на сервере у меня все и так летает...я не замечаю тормозов, а вот на ноуте (где все это в итоге работает) уже заметно...
|
|||
8
Maxus43
13.10.11
✎
11:37
|
(6) план запроса неоптимальный может выбрать СКЛ если по вложеному запросу соединение или ГДЕ, так написано в библии 1с, так будет по феншую
|
|||
9
Fragster
гуру
13.10.11
✎
11:38
|
надо сделать ВТ с записями регистра обоих типов и полем, разделяющим по типам. индекс по этому полю (первый) и по ссылке (второй). потом соединение вместо ГДЕ
|
|||
10
Ненавижу 1С
гуру
13.10.11
✎
11:38
|
а если так:
ВЫБРАТЬ ЗаказПокупателя.Ссылка КАК Документ, ЗаказПокупателя.Контрагент КАК Контрагент, ЗаказПокупателя.СуммаДокумента КАК Сумма, ИСТИНА КАК Отметка ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя ГДЕ ЗаказПокупателя.Проведен = ИСТИНА И (НЕ ЗаказПокупателя.Ссылка В (ВЫБРАТЬ ВыгруженныеДокументыСрезПоследних.ВыгруженныйДокумент КАК ВД ИЗ РегистрСведений.ВыгруженныеДокументы.СрезПоследних(,) КАК ВыгруженныеДокументыСрезПоследних ГДЕ ВыгруженныйДокумент=ЗаказПокупателя.Ссылка)) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПосещениеКлиента.Ссылка, ПосещениеКлиента.Контрагент, 0, ИСТИНА ИЗ Документ.ПосещениеКлиента КАК ПосещениеКлиента ГДЕ ПосещениеКлиента.ПометкаУдаления = ЛОЖЬ И (НЕ ПосещениеКлиента.Ссылка В (ВЫБРАТЬ ВыгруженныеДокументыСрезПоследних.ВыгруженныйДокумент КАК ВД ИЗ РегистрСведений.ВыгруженныеДокументы.СрезПоследних(, ) КАК ВыгруженныеДокументыСрезПоследних ГДЕ ВыгруженныйДокумент=ПосещениеКлиента.Ссылка)) УПОРЯДОЧИТЬ ПО Документ, Контрагент АВТОУПОРЯДОЧИВАНИЕ |
|||
11
mzelensky
13.10.11
✎
11:40
|
Чет тогда не совсем понимаю, как сделать соединение....чтобы мне вышли те записи, которые есть в первой выборке данных и НЕТ во второй ?!
|
|||
12
НЕА123
13.10.11
✎
11:41
|
(7)если файловая то
попробовать типа так ... ГДЕ Выбор КОГДА ЗаказПокупателя.Проведен = ИСТИНА ТОГДА Выбор КОГДА (НЕ ЗаказПокупателя.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ ВыгруженныеДокументыСрезПоследних.ВыгруженныйДокумент КАК ВД ИЗ РегистрСведений.ВыгруженныеДокументы.СрезПоследних(, ВыгруженныйДокумент ССЫЛКА Документ.ЗаказПокупателя) КАК ВыгруженныеДокументыСрезПоследних)) ТОГДА ИСТИНА Иначе ЛОЖЬ КОНЕЦ ИНАЧЕ ЛОЖЬ КОНЕЦ |
|||
13
Maxus43
13.10.11
✎
11:41
|
(11) соединение по НЕ, произвольное выражение галку тыкни в соединении
|
|||
14
mzelensky
13.10.11
✎
11:44
|
(13) ну я вот так попробовал...но это не правильно:
ВЫБРАТЬ ПосещениеКлиента.Ссылка, ПосещениеКлиента.Контрагент, 0, ИСТИНА ИЗ Документ.ПосещениеКлиента КАК ПосещениеКлиента Внутреннее соединение (ВЫБРАТЬ РАЗЛИЧНЫЕ ВыгруженныеДокументыСрезПоследних.ВыгруженныйДокумент КАК ВД ИЗ РегистрСведений.ВыгруженныеДокументы.СрезПоследних(, ВыгруженныйДокумент ССЫЛКА Документ.ПосещениеКлиента) КАК ВыгруженныеДокументыСрезПоследних ) как ВложЗ ПО ПосещениеКлиента.Ссылка НЕ В (ВложЗ.вд) ГДЕ ПосещениеКлиента.ПометкаУдаления = ЛОЖЬ |
|||
15
mzelensky
13.10.11
✎
11:44
|
(12) а зачем такие извращения?!
|
|||
16
mzelensky
13.10.11
✎
11:52
|
(13) так какой выражение прописать в "ПО" ?!
|
|||
17
Ненавижу 1С
гуру
13.10.11
✎
11:53
|
пробовал (10)?
|
|||
18
mzelensky
13.10.11
✎
11:56
|
(17) еще нет, хочу сперва с соединением разобраться.
|
|||
19
mzelensky
13.10.11
✎
12:04
|
(2) (13) ТАК КАК ЭТО "НЕ" ПОСТАВИТЬ???
|
|||
20
Ненавижу 1С
гуру
13.10.11
✎
12:05
|
(19) никак, ставь равенство и условие потом:
ГДЕ ВыгруженныеДокументыСрезПоследних.ВыгруженныйДокумент ЕСТЬ NULL |
|||
21
mzelensky
13.10.11
✎
12:08
|
(20) и чем это будет принципиально отличаться от первоисточника (запроса) в (0) ?
|
|||
22
НЕА123
13.10.11
✎
12:09
|
(15)
в файловой работает оптимизатор проверки лог.выражений? в файловой 81 - нет. |
|||
23
Ненавижу 1С
гуру
13.10.11
✎
12:15
|
(21) может отличаться, но вообще предлагаю юзать (10)
|
|||
24
mzelensky
13.10.11
✎
12:22
|
(23) т.е. вот так:
ВЫБРАТЬ ЗаказПокупателя.Ссылка КАК Документ, ЗаказПокупателя.Контрагент КАК Контрагент, ЗаказПокупателя.СуммаДокумента КАК Сумма, ИСТИНА КАК Отметка ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя ГДЕ ЗаказПокупателя.Проведен = ИСТИНА И (НЕ ЗаказПокупателя.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ ВыгруженныеДокументыСрезПоследних.ВыгруженныйДокумент КАК ВД ИЗ РегистрСведений.ВыгруженныеДокументы.СрезПоследних(, ВыгруженныйДокумент ССЫЛКА Документ.ЗаказПокупателя) КАК ВыгруженныеДокументыСрезПоследних ГДЕ ВыгруженныеДокументыСрезПоследних.ВыгруженныйДокумент=ЗаказПокупателя.Ссылка )) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПосещениеКлиента.Ссылка, ПосещениеКлиента.Контрагент, 0, ИСТИНА ИЗ Документ.ПосещениеКлиента КАК ПосещениеКлиента ГДЕ ПосещениеКлиента.ПометкаУдаления = ЛОЖЬ И (НЕ ПосещениеКлиента.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ ВыгруженныеДокументыСрезПоследних.ВыгруженныйДокумент КАК ВД ИЗ РегистрСведений.ВыгруженныеДокументы.СрезПоследних(, ВыгруженныйДокумент ССЫЛКА Документ.ПосещениеКлиента) КАК ВыгруженныеДокументыСрезПоследних ГДЕ ВыгруженныеДокументыСрезПоследних.ВыгруженныйДокумент = ПосещениеКлиента.Ссылка)) УПОРЯДОЧИТЬ ПО Документ, Контрагент АВТОУПОРЯДОЧИВАНИЕ |
|||
25
НЕА123
13.10.11
✎
12:24
|
ТС - писатель, однако... (с)
|
|||
26
mzelensky
13.10.11
✎
12:39
|
(25) что вас навело на подобные выводы?
|
|||
27
hhhh
13.10.11
✎
12:46
|
(26) ну просто тебе полдня уже пишут, что
Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ в файловой версии - это нереальные тормоза, а ты как глухой, то же самое в запросе у тебя. |
|||
28
mzelensky
13.10.11
✎
12:49
|
(27) так ничео другого мне так и не предложили...написано ток "соединение через НЕ"..а как это соединение через НЕ сделать - бог его знает, называется стелепатируй из космоса!
|
|||
29
НЕА123
13.10.11
✎
13:05
|
каждый день появляются темы "новичков" вот с такими вот вопросами (как в 0)...надо нарыть свои первые темы...неужели я тоже так тупил?!?!? стремно то как :(
(с) mzelensky |
|||
30
mzelensky
13.10.11
✎
13:14
|
(29) прости пост (20). Он тоже новичок?
|
|||
31
НЕА123
13.10.11
✎
13:16
|
(30)
ну не ставь равенство. а вот про NULL в (20) ты и не прочитал. |
|||
32
mzelensky
13.10.11
✎
13:20
|
(31) прочел, но ведь он в (10) использует тот же прием "Ссылка в (...)", что и я...ну + небольшие доработки, а ты говоришь .что от этого нужно уходить!?
да и ты в (12) предлагаешь использовать "НЕ ЗаказПокупателя.Ссылка В" ... а доходить туда она будет, т.к. условие "Выбор КОГДА ЗаказПокупателя.Проведен = ИСТИНА ТОГДА" будет выполняться в 99,9% случаев! в итоге пришли к тому, с чего начинали! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |