Я пытаюсь отобразить свойства сотрудника, используя C # WPF view.У меня есть данные в разных таблицах оракула в моей БД.
Хотя существует множество таблиц, каждый набор состоит из одной и той же структуры.Структура этих таблиц на высоком уровне ...
Структура таблиц
Employee table columns (EMP table) : ID, Name, Organisation
Employee properties table columns (EMPPR table): ID, PropertyName, PropertyValues
Идентификатор и имя каждого сотрудника в таблице EMP и свойства сотрудника в таблице EMPPR.Каждый сотрудник имеет свойства от 40 до 80, то есть от 40 до 80 строк на сотрудника в таблице EMPPR.
Таким образом, каждый отдел имеет один набор таблиц.т.е. (DEVEMP,DEVEMPPR)
, (HREMP,HREMPPR)
, (ADMINEMP, ADMINEMPPR)
, (FINEMP, FINEMPPR)
, (ADMINEMP, ADMINEMPPR)
и т. д. *
Мне нужно получить свойства сотрудников сразу из нескольких отделов, где я получаю списки имен сотрудников по отделам,
Я использую следующий запрос для извлечения свойств сотрудника для введенных имен следующим образом:
SELECT Pr.PropertyName, Pr.PropertyValue
FROM DEVEMP Emp
JOIN DEVEMPPR Pr ON Emp.ID = Pr.ID
AND Emp.Name IN (<List of DEV Names Inputted>)
Вот так мне нужно выполнить для каждого отдела.
Является ли запросбудет эффективным, если я буду использовать UNION ALL со всеми запросами к таблицам отделов и условием IN с комбинированным списком, как показано ниже?
ПРОСМОТР, используя UNION ALL
CREATE OR REPLACE FORCE VIEW EMPPRVIEW(NAME, PRNAME, PRVALUE) AS
SELECT Emp.Name, Pr.PropertyName, Pr.PropertyValue
FROM DEVEMP Emp
JOIN DEVEMPPR Pr ON Emp.ID = Pr.ID
UNION ALL
SELECT Emp.Name, Pr.PropertyName, Pr.PropertyValue
FROM HREMP Emp
JOIN HREMPPR Pr ON Emp.ID = Pr.ID
UNION ALL
SELECT Emp.Name, Pr.PropertyName, Pr.PropertyValue
FROM ADMINEMP Emp
JOIN ADMINEMPPR Pr ON Emp.ID = Pr.ID
UNION ALL
.
.
.
ЗАПРОС ОТ ПРОСМОТРА
SELECT NAME, PRNAME, PRVALUE
FROM EMPPRVIEW
WHERE NAME IN (<Combined list of names from each dept>)
Подход №2 прост в реализации, поскольку мы выполняем запрос сразу, но я думаю, что он снижает производительность запроса.
Какой подход лучше для выполнения одного запроса с UNION ALL или для отдельного выполнения запроса для каждого отдела?
PS.Введенный список имен emp может содержать 1000 имен для каждого отдела, и каждый сотрудник имеет 40-80 свойств.