|
Объединение таблиц в запросе по нескольким реквизитам | ☑ | ||
---|---|---|---|---|
0
Bigbro
27.03.23
✎
06:48
|
как сделать правильно?
у меня есть справочник, условно товары и есть регистр условно товары поставщиков. в регистре товары поставщиков есть реквизиты типа контрагент, ссылка1, ссылка2 которые как раз и есть мой справочник товары (там может быть пусто или одно заполнено или оба) как правильно сделать запрос чтобы выбрать мой товар и контрагента была бы одна ссылка все замечательно выбрать товары.ссылка регтовары.контрагент из регистрсведений.товарыпоставщиков как регтовары внутреннее соединение справочник.товары как товары по регтовары.ссылка1 = товары.ссылка а как вторую ссылку пристегнуть? |
|||
1
Bigbro
27.03.23
✎
06:49
|
через отдельные запросы и юнион?
|
|||
2
Мультук
гуру
27.03.23
✎
08:13
|
выбрать
товары.ссылка регтовары.контрагент из регистрсведений.товарыпоставщиков как регтовары внутреннее соединение справочник.товары как товары по (регтовары.ссылка1 = товары.ссылка) ИЛИ (регтовары.ссылка2 = товары.ссылка) |
|||
3
Bigbro
27.03.23
✎
08:19
|
ага, спасибо, уже сам понял что ступил)
|
|||
4
АгентБезопасной Нацио
27.03.23
✎
08:41
|
постановка задачи странная...
|
|||
5
Bigbro
27.03.23
✎
08:54
|
там все сильно сложнее, это синтетический кусок на пальцах выдранный чтоб мне понять)
но задача вполне реальная, более того я вам так скажу что практически каждый с этой хренью работает. общеиспользуемое ПО вот таким образом с данными обращается. |
|||
6
Bigbro
27.03.23
✎
08:59
|
лучше расскажите почему я вытащил в подзапрос таблицу, ограничив на берегу количество данных плюс минус на порядок, и потом затолкал во внутреннее соединение а стало работать медленнее наоборот.
меня вроде учили что условия надо накладывать как можно раньше и жестче. а получается что полные таблицы соединить и наложить условия на результат быстрее..( странно. |
|||
7
Bigbro
27.03.23
✎
09:06
|
хотя второй раз быстрее наоборот выполнилось. ладно пофигу разница все равно на уровне 2%. едем дальше)
|
|||
8
Momus
27.03.23
✎
09:13
|
(7) как минимум разбить соединение по ИЛИ на ОБЪЕДИНИТЬ ВСЕ
|
|||
9
Гена
гуру
27.03.23
✎
09:18
|
(8) В старые добрые времена меня учили, что некомильфо использовать логическое ИЛИ в условиях соединения, то есть в секции ПО запроса = резкое замедление. Но это было давно, когда деревья были большие )
|
|||
10
АНДР
27.03.23
✎
09:22
|
(0) Производительность сильно зависит от сервера БД.
(6) Или ограничивает использование индексов. План смотрел? В Или один скан (индекса) РС, с предварительным отбором уже 2. |
|||
11
АНДР
27.03.23
✎
09:23
|
(8) Зависит от наличия индексов и параметров выборки по ним.
|
|||
12
Bigbro
27.03.23
✎
09:25
|
(8) то есть в 1 я правильно предположил.
сейчас попробую вырастет конечно огород большой но если будет быстрее это важно. (10) не смотрел пока, сейчас займемся) |
|||
14
АгентБезопасной Нацио
27.03.23
✎
09:34
|
(5) уровень секретности поражает... И особенно поражает когда на "общеиспользуемое ПО" ставят новичков [в этом стеке].
|
|||
15
Bigbro
27.03.23
✎
11:08
|
(14) прорвемся, все когда то были новичками) мозгам полезно загонять их в режим новичка, склероз не страшен)
насчет секретности я устал читать фолианты с перечислениями запретов поэтому уже по умолчанию принимаю что не имею права рассказывать ничего без отдельного разрешения и одобрения. |
|||
16
АгентБезопасной Нацио
27.03.23
✎
11:49
|
(15) не, я не о том, что ты пока не всё понимаешь. Понятно, что освоишь. Но ставить новичка в теме на важные вещи (тем более, общеиспользуемые) - нехорошо, неправильно.
Видимо, потому-то у нас все эти ГосИСы и иже работают проктально-генитально. |
|||
17
Bigbro
27.03.23
✎
12:16
|
(16) не не я не со стороны вендора, это было бы действительно безответсвенно, я со стороны пользователя общеиспользуемого сервиса, которому понадобили по хотелкам юзеров некоторые доработки к функционалу, для чего пришлось влезть во внутреннюю структуру данных и поковыряться.
|
|||
18
Bigbro
27.03.23
✎
13:01
|
короче не делайте по ИЛИ соединение - 5 минут
вместо полсекунды для объединения отдельных запросов. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |