Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!
Cотрудничество: @energy_c
РКН: https://clck.ru/3QREBc
Post #2157
1.22K

Настройте оценку пользовательских функций!
Для пользовательской функции PostgreSQL позволяет явно указать стоимость вызова через
Причём пересоздавать функцию не обязательно:
Чем выше
PostgreSQL прямо предоставляет
🔥 Если пользовательская функция ломает оценки строк или вызывается слишком часто, проверьте
➡️ SQL Ready | #совет
Для пользовательской функции PostgreSQL позволяет явно указать стоимость вызова через
COST, а для функции, возвращающей набор строк, — ожидаемое число строк через ROWS. Причём пересоздавать функцию не обязательно:
ALTER FUNCTION find_orders(bigint)
ROWS 5;
ALTER FUNCTION expensive_check(jsonb)
COST 500;
Чем выше
COST, тем дороже планировщик считает вычисление и тем сильнее старается не выполнять его лишний раз. PostgreSQL прямо предоставляет
COST и ROWS как информацию для оптимизации пользовательских функций. EXPLAIN (ANALYZE, BUFFERS)
SELECT u.id, o.*
FROM users u
CROSS JOIN LATERAL find_orders(u.id) o;
🔥 Если пользовательская функция ломает оценки строк или вызывается слишком часто, проверьте
COST и ROWS — иногда правильный план получается без переписывания запроса и новых индексов.➡️ SQL Ready | #совет
- ❤ 11
- 👍 8
- 🔥 4









