|
01.07.2020, 14:58 | #1 |
Участник
|
Использование Union
Здравствуйте.
Axapta 3.0. Нужно сделать объединение данных двух select'ов. Как я понимаю, это можно сделать в одном запросе только используя прямой запрос к базе используя Statement, UserConnection? Используя оператор while select нельзя так сделать? И через Query, QueryBuildDataSource тоже не получиться? |
|
01.07.2020, 15:01 | #2 |
Участник
|
Только прямой запрос
|
|
01.07.2020, 17:05 | #3 |
Участник
|
Ещё есть вариант с подменой текста запроса у View.
Подмена запроса для View Последний раз редактировалось S.Kuskov; 01.07.2020 в 17:07. |
|
01.07.2020, 23:03 | #4 |
Administrator
|
Только нужно учесть, что запрос UNION настолько медленный, что может получиться быстрее данные двух запросов просто залить в одну временную табличку (временную на словах; в БД она должна быть постоянной).Но тут нужно исключать конфликт двух одновременно работающих пользователей над этим механизмом.
На малом объеме данных (когда вопрос подбора индексов неактуален) конечно можно и UNION-ом воспользоваться.
__________________
Возможно сделать все. Вопрос времени |
|
03.07.2020, 13:31 | #5 |
Участник
|
|
|
05.07.2020, 21:29 | #6 |
Administrator
|
Цитата:
А если INSERT будет делаться во временную таблицу АХ, которая физически после превышения порога 128Кбайт (кажется) становится файлом - то конечно UNION будет быстрее, т.к. он использует все-таки ресурсы сервера БД. В большинстве случаев, без конкретики вполне можно исходить из того, что UNION медленный вопрос и его всегда можно ускорить. Но конечно будут случаи, когда UNION будет быстрее. Но тут опять-таки надо исследовать причину. Скорее всего можно будет уйти от UNION с увеличением скорости. Axapta 3.0 - это неважно - все равно автор предполагает использование Statement и UserConnection. До версии 2009 - UNION в Х++ или через метаданные АОТа нельзя задать.
__________________
Возможно сделать все. Вопрос времени |
|
02.07.2020, 15:33 | #7 |
Участник
|
Если у Вас While select, то почему просто не сделать 2 последовательных while select? Формально - это и будет UNION ALL. Если же надо исключать дубли, то это добавить объект Set и отслеживать через него факты повторов по ключевым полям
Собственно, Вы же все-равно будете писать 2 запроса. Ну и в чем проблема написать их по очереди, а не в одном операторе?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
03.07.2020, 18:41 | #8 |
Участник
|
Коллеги, а какая разница быстрый UNION или не очень если у автора топика:
Цитата:
Axapta 3.0.
|
|