# Долгий запрос

    => \timing on

    Timing is on.

Обычный оператор:

    => DO $$
    BEGIN
      FOR i IN 1..10 LOOP
        EXECUTE 'SELECT avg(amount) FROM ticket_flights';
      END LOOP;
    END;
    $$ LANGUAGE plpgsql;

    DO
    Time: 21286,115 ms (00:21,286)

Подготовленный оператор:

    => DO $$
    BEGIN
      FOR i IN 1..10 LOOP
        PERFORM avg(amount) FROM ticket_flights;
      END LOOP;
    END;
    $$ LANGUAGE plpgsql;

    DO
    Time: 20152,028 ms (00:20,152)

Время изменилось незначительно - большую часть занимает выполнение запроса.

# Быстрый запрос

Обычный оператор:

    => DO $$
    BEGIN
      FOR i IN 1..100000 LOOP
        EXECUTE 'SELECT * FROM bookings WHERE book_ref = ''0824C5''';
      END LOOP;
    END;
    $$ LANGUAGE plpgsql;

    DO
    Time: 4680,450 ms (00:04,680)

Подготовленный оператор:

    => DO $$
    BEGIN
      FOR i IN 1..100000 LOOP
        PERFORM * FROM bookings WHERE book_ref = '0824C5';
      END LOOP;
    END;
    $$ LANGUAGE plpgsql;

    DO
    Time: 850,609 ms

Время сократилось существенно - разбор и планирование занимает большую часть общего времени.