Имя: Пароль:
1C
 
Ребят, помогите оптимизировать запрос
0 olo_lo1
 
11.02.20
12:25
Никогда не пользовался индексированием на свой стыд в запросах, но видимо это тот случай когда без него никуда.

Есть 2 таблицы, в которых по несколько десятков млн строк.

Ключом соединяю их, загоняю во временную, а на след этапе ставлю условие и вывод данных в обработку.

Со сменой сервака все глохнет, как можно оптимизировать,
заранее спасибо.

попробовал Индексирование - может как то не так делаю не взлетело.

ВЫБРАТЬ РАЗЛИЧНЫЕ
    Таблица2.transaction_id,
    Таблица2.amount,
    Таблица1.Номер
ПОМЕСТИТЬ Т1
ИЗ
    Документ.Транзакция КАК Таблица2
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Нумератор КАК Таблица1
        ПО Таблица2.Ссылка = Таблица1.Документ
ГДЕ
    Таблица2.Проведен
    И Таблица2.transaction_id <> ""
    И Таблица2.Ссылка = &Док
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1000
    Т1.transaction_id,
    Т1.amount
ИЗ
    Т1 КАК Т1
ГДЕ
    Т1.Номер ЕСТЬ NULL

УПОРЯДОЧИТЬ ПО
    Т1.Ссылка.Номер
1 olo_lo1
 
11.02.20
12:26
И Таблица2.Ссылка = &Док - это я по ошибке в топик поставил, его не должно быть, просто сейчас по другому виснет
2 H A D G E H O G s
 
11.02.20
12:30
(0) Не помещай в ВТ
3 yavasya
 
11.02.20
12:31
(0) сделай в РегистрСведений.Нумератор поле Документ измерением и сделай порядок по вертикали 1 и сделай его индексируемым. больше ты ничего не сделаешь. Помни что запрос ко временной таблице это подзапрос в условии
4 H A D G E H O G s
 
11.02.20
12:32
(3) "Помни что запрос ко временной таблице это подзапрос в условии"

Вы несете чушь.
5 olo_lo1
 
11.02.20
12:33
(3) стоит и как измерение и как ведущее и как основной отбор. Т.е. по нему индексирование идет.
А что такое "сделай порядок по вертикали 1 и сделай его индексируемым" поясните пож
6 H A D G E H O G s
 
11.02.20
12:33
(3) Документ у него и так Измерение, если вы хоть немного чтото проектировали
7 yavasya
 
11.02.20
12:33
(4) не несу чушь, сейчас найду ссылку на ИТС
8 ДенисЧ
 
11.02.20
12:34
(3) "запрос ко временной таблице это подзапрос в условии"

https://i.ytimg.com/vi/WVgSB7pEdsI/maxresdefault.jpg
9 H A D G E H O G s
 
11.02.20
12:34
(0) Запрос часто будет пользоваться?
10 olo_lo1
 
11.02.20
12:34
(2) дело в том что данных оч много а мне нужно отскекать первую 1000 и как тут без ВТ обойтись ?
11 olo_lo1
 
11.02.20
12:34
(9) каждые 5 минут
12 H A D G E H O G s
 
11.02.20
12:35
(11)
Ресурс Номер регистра перенеси в Измерения, следом за Документ, либо проиндексируй
13 H A D G E H O G s
 
11.02.20
12:36
(10) Отсекай в первом запросе, в чем проблема? Туда же и Условие на null впили
14 yavasya
 
11.02.20
12:36
(6) (8) Это я имею ввиду соединение со временной таблицей. Виртуальные таблицы , используемые в языке запросов 1С предприятия могут разворачиваться в подзапрос СУБД
15 Simod
 
11.02.20
12:37
(14) Эээ... что?
16 H A D G E H O G s
 
11.02.20
12:37
И напиши в 1С, что хочешь составной индекс на
transaction_id,
amount

в таблице документов.
Они такое любят.
17 ДенисЧ
 
11.02.20
12:37
(14) "я имею ввиду соединение со временной таблицей. Виртуальные таблицы "
Ты уж определись... Или крестик, или трусики...
18 H A D G E H O G s
 
11.02.20
12:37
(14) Где тут видишьь вирт таблицу?
19 Cyberhawk
 
11.02.20
12:38
(10) А зачем каждый раз первую тыщу выбирать?
20 yavasya
 
11.02.20
12:39
21 Simod
 
11.02.20
12:39
(0) Что мешает в одном запросе, без временной таблицы, получить данные, упорядочить и выбрать первые 1000?
22 H A D G E H O G s
 
11.02.20
12:39
(20) Хорошая попытка, но нет
23 vi0
 
11.02.20
12:39
(0) Зачем у тебя условие по Проведен и по transaction_id  если ты передаешь одну ссылку?

ГДЕ
    Таблица2.Проведен
    И Таблица2.transaction_id <> ""
    И Таблица2.Ссылка = &Док
24 H A D G E H O G s
 
11.02.20
12:40
(23) Он писал, что условие по ссылке добавил по запаре
25 vi0
 
11.02.20
12:40
(0) зачем ты делаешь соединение если документ один у тебя?
почему не выбираешь сразу из регистра Нумератор ?
26 vi0
 
11.02.20
12:42
(0) откуда у тебя УПОРЯДОЧИТЬ ПО Т1.Ссылка.Номер
если в выборке нет ссылки?

покажи корректный запрос, а то много неточностей и отсюда неверные рассуждения у читающих
27 olo_lo1
 
11.02.20
12:43
(24) Спасибо, без ВТ взлетело.


ВЫБРАТЬ ПЕРВЫЕ 1000  
    Таблица2.transaction_id,
    Таблица2.amount,
    Таблица2.Номер,
    Таблица1.Номер КАК Номер2
ИЗ
    Документ.Транзакция КАК Таблица2
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Нумератор КАК Таблица1
        ПО Таблица1.Номер есть NULL
ГДЕ
    Таблица2.Проведен
    И Таблица2.transaction_id <> ""
    
УПОРЯДОЧИТЬ ПО
   Таблица2.Номер
28 Simod
 
11.02.20
12:43
(0) "Нумератор" в РС это документ? Если имеет составной тип, то

УПОРЯДОЧИТЬ ПО
    Т1.Ссылка.Номер

будет работать "не очень".
29 H A D G E H O G s
 
11.02.20
12:43
(27) Епстественно
30 olo_lo1
 
11.02.20
12:43
(25) там нет нужного документа, схема немного сложнее, описывать ее не стал.
31 Simod
 
11.02.20
12:45
+(28) Точнее, вообще не понятно, откуда берется "Ссылка", есть в ВТ "Т1" ее вообще нет.
32 Said_We
 
11.02.20
12:46
(0) Нумиратор, составной тип у поля "Документ"?
33 Simod
 
11.02.20
12:47
(27) Как бы это запрос совсем не идентичен (0).
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший