Что такое BULK COLLECT и FORALL, почему они работают быстрее?

BULK COLLECT и FORALL — это конструкции PL/SQL для эффективной работы с большими объемами данных.

Короткий ответ

Что ответить на собеседовании

BULK COLLECT и FORALL — это конструкции PL/SQL для эффективной работы с большими объемами данных.

Подробный разбор

Ответ с пояснениями

BULK COLLECT и FORALL — это конструкции PL/SQL для эффективной работы с большими объемами данных.

  • BULK COLLECT позволяет загружать сразу множество строк из курсора или запроса в коллекцию за одну операцию, уменьшая количество переключений между SQL и PL/SQL.
  • FORALL выполняет DML-операции (INSERT, UPDATE, DELETE) для всех элементов коллекции за один вызов, вместо цикла с отдельными операциями.

Они работают быстрее, потому что снижают количество контекстных переключений между SQL и PL/SQL, уменьшая накладные расходы на обработку каждой строки по отдельности.

Пример:

DECLARE
  TYPE t_ids IS TABLE OF employees.employee_id%TYPE;
  l_ids t_ids;
BEGIN
  SELECT employee_id BULK COLLECT INTO l_ids FROM employees WHERE department_id = 10;

  FORALL i IN l_ids.FIRST .. l_ids.LAST
    UPDATE employees SET salary = salary * 1.1 WHERE employee_id = l_ids(i);
END;

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку