Skip to content

AndreyPythonist/hierarchical_data_retrieval

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Иерархическое получение данных

Получение данных из офиса по id сотрудника

Запуск

Docker:

docker compose up -d
docker compose run cli_api {id_employee}

Описания:

Описание текущего решения

В текущей реализации поиск всех сотрудников (по id сотрудника) осуществляется путем поиска корневого элемента (id офиса) и по id корневого элемента достаются все дочерние записи с соответствующим типом (type = 3)

Описание сложности выборки

  1. Данная реализация требует нахождения офиса, к которому относится сотрудник
  2. Найти всех сотрудников в этом офисе и его подразделениях

Оптимизация выборки

  1. Использование индексов:

Индекс по 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);
  1. Добавление столбца office_id, указывающий офис для каждого сотрудника

После этого запрос упростится:

SELECT name FROM employees WHERE office_id = (SELECT OfficeId FROM employees WHERE id = id_employee);

Библиотеки для работы

Указаны в requirements.txt

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published