Получение данных из офиса по id сотрудника
Docker:
docker compose up -d
docker compose run cli_api {id_employee}
В текущей реализации поиск всех сотрудников (по id сотрудника) осуществляется путем поиска корневого элемента (id офиса) и по id корневого элемента достаются все дочерние записи с соответствующим типом (type = 3)
- Данная реализация требует нахождения офиса, к которому относится сотрудник
- Найти всех сотрудников в этом офисе и его подразделениях
- Использование индексов:
Индекс по id (основной ключ)
CREATE INDEX idx_employees_id ON employees(id);
Индекс по parent_id (ускорит рекурсивный запрос)
CREATE INDEX idx_employees_parent_id ON employees(parent_id);
Индекс по type (ускорит фильтрацию сотрудников)
CREATE INDEX idx_employees_type ON employees(type);
- Добавление столбца office_id, указывающий офис для каждого сотрудника
После этого запрос упростится:
SELECT name FROM employees WHERE office_id = (SELECT OfficeId FROM employees WHERE id = id_employee);
Указаны в requirements.txt