У меня есть три таблицы «Сотрудники», «Отделы» и «Сотрудники». Таблицы «Сотрудники» ссылаются на таблицу «Отделы» (У каждого сотрудника должен быть идентификатор отдела).Однако сотрудник может существовать в нескольких отделах, добавляя записи (EmployeeId и DepartmentId) в таблицу EmployeeInDepartments.
В настоящее время у меня есть следующая хранимая процедура для извлечения сотрудников по отделу:
CREATE PROCEDURE dbo.CollectEmployeesByDepartmentId
(
@DepartmentId int,
@IsDeleted bit
)
AS
BEGIN
SELECT Employees.*
FROM Employees
WHERE ((Employees.IsDeleted = @IsDeleted )
AND ((Employees.DepartmentId = @DepartmentId)
OR (Employees.EmployeeId IN (SELECT EmployeesInDepartments.EmployeeId
FROM EmployeesInDepartments
WHERE (EmployeesInDepartments.DepartmentId = @DepartmentId)
)
)
)
)
END
Как я могу оптимизировать эту хранимую процедуру и, возможно, использовать JOINS?