Я хотел бы создать инструмент отчетности в базе данных Oracle, который рассчитывает оценку на основе результата нескольких довольно сложных запросов, которые работают с разными таблицами.Все эти запросы дадут мне список конкретных идентификаторов, если определенные критерии соответствуют.
Вот пример:
Представьте, что будет три запроса "Найти все идентификаторы пользователей, которые живут в Сиэтле", "Найти все идентификаторы пользователей, которые купили автомобиль во времяпоследние три месяца »и« Найти все идентификаторы пользователей, которые перемещались в пределах США более 3 раз ».Каждый из этих запросов будет получать оценку для пользователя, если для запроса найден идентификатор пользователя, например, запрос 1 = 3 балла, запрос 2 = 5 баллов, запрос 3 = 2 балла.Конечный результат должен содержать список пользователей и их идентификаторы, которые соответствуют хотя бы одному из запросов.Набор результатов будет упорядочен по сумме всех нисходящих баллов.Набор результатов должен быть актуальным.
| user_id | points_lived_in_seattle | points_bought_car | points_moved | sum |
------------------------------------------------------------------------------
| 123 | 3 | 0 | 2 | 5 |
| 456 | 0 | 3 | 0 | 3 |
| 789 | 0 | 0 | 2 | 2 |
Каков наилучший способ создания такого инструмента отчетности в Oracle?Я думал создать представление, но это будет очень сложно, потому что в ближайшем будущем к нему можно добавить 20 или более запросов.Также меня беспокоит тот факт, что объединения, объединяющие все запросы, работают неправильно и вызывают неправильный набор результатов.
Другой вариант, о котором я думал, - это создать материализованное представление для каждого из запросов иодно представление, которое просто создает оценку на основе других представлений.
Как вы решите эту проблему?Какое влияние может оказать производительность на базу данных в целом, если один запрос выполняется очень медленно?