=> \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
Время сократилось существенно - разбор и планирование занимает большую часть общего времени.