Вход | Регистрация
 

Ребят, помогите оптимизировать запрос

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

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

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

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

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

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


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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.