PostgreSQL без рутины: 12 промтов, которые превратят оптимизацию БД в увлекательный квест

Вы когда-нибудь просыпались в 3 часа ночи от мысли «почему этот запрос выполняется 10 секунд?»? Я — да. Оптимизация PostgreSQL часто напоминает археологические раскопки: копаешься в планах запросов, индексах, настройках, а результат — как повезет. Но что, если у вас есть помощник, который не спит, не устает и знает документацию наизусть? Речь о промтах для нейросетей. Правильно составленный промт — это не просто просьба, а точное ТЗ, которое превращает LLM в эксперта по базам данных.

В этой статье я собрал 12 проверенных промтов, которые реально экономят часы работы. Они покрывают все: от диагностики медленных запросов до проектирования схем и автоматизации рутины. Каждый промт можно скопировать и использовать сразу — я проверил их на своих проектах. Поехали!

Почему промты работают для PostgreSQL?

LLM обучены на огромном корпусе текстов, включая документацию PostgreSQL, форумы и реальные кейсы. Они могут анализировать планы запросов, предлагать индексы и писать оптимизированные версии SQL. Главное — дать им контекст и четкие инструкции. Промт — это мост между вашей болью и знаниями модели.

12 промтов, которые изменят вашу работу с БД

1. Диагностика медленного запроса

Задача: Понять, почему конкретный запрос тормозит, и получить план исправлений.

Проанализируй следующий SQL-запрос и план выполнения (EXPLAIN ANALYZE). Определи узкие места, предложи конкретные улучшения (индексы, переписывание запроса, изменение настроек). Ответ структурируй так: 1) Диагноз, 2) Причины, 3) Рекомендации с примерами кода.

Запрос: [вставьте ваш SQL]
План: [вставьте вывод EXPLAIN ANALYZE]

Пример: Вы вставили запрос с JOIN трех таблиц и увидели Seq Scan на большой таблице. Промт подскажет создать индекс и переписать JOIN.

2. Генерация индексов для существующей схемы

Задача: Получить список индексов, которые ускорят ваши типичные запросы.

Вот схема таблиц: [CREATE TABLE ...]. Вот список частых запросов: [SQL]. Предложи оптимальные индексы (B-tree, GIN, BRIN и т.д.) с обоснованием. Учти, что лишние индексы замедляют запись.

Пример: Для таблицы с JSONB-полем и фильтрацией по дате промт предложит GIN-индекс для JSONB и композитный B-tree для (date, user_id).

3. Оптимизация сложного JOIN

Задача: Упростить и ускорить запрос с множественными JOIN.

Перепиши этот запрос так, чтобы он выполнялся быстрее: [SQL]. Объясни, какие изменения ты сделал и почему. Обрати внимание на возможность использования оконных функций, CTE или агрегатов.

Пример: Запрос с тремя JOIN и подзапросом в WHERE промт перепишет через JOIN LATERAL или оконную функцию.

4. Разбор EXPLAIN ANALYZE

Задача: Интерпретировать вывод планировщика.

Я новичок в PostgreSQL. Объясни этот вывод EXPLAIN ANALYZE простыми словами: [вывод]. Укажи, какие операции самые дорогие, и что они означают. Дай рекомендации по оптимизации.

Пример: Промт объяснит, что "Hash Join" — это нормально, но "Sort" на большом объеме — плохо, и предложит индекс.

5. Выявление проблем с блокировками

Задача: Найти взаимоблокировки и способы их избежать.

Вот SQL-запросы, которые вызывают deadlock: [SQL]. Объясни, почему возникает взаимоблокировка, и предложи решение (порядок блокировок, SELECT FOR UPDATE и т.д.).

Пример: Промт посоветует всегда блокировать строки в одном порядке или использовать уровень изоляции READ COMMITTED.

6. Проектирование схемы под highload

Задача: Спроектировать схему БД для высоконагруженного сервиса.

Спроектируй схему PostgreSQL для [описание проекта]. Учти: [требования к нагрузке, целостности, шардированию]. Для каждой таблицы дай DDL, комментарии и обоснование выбора типов данных. Добавь индексы и партиционирование, если нужно.

Пример: Для соцсети промт предложит партиционирование постов по дате, индексы для ленты, внешние ключи с ON DELETE CASCADE.

7. Помощь в написании сложных запросов

Задача: Сгенерировать SQL для нетривиальной выборки.

Напиши SQL-запрос для PostgreSQL, который [описание задачи]. Учитывай [особенности, например, NULL, дубликаты, производительность]. Покажи несколько вариантов с пояснениями.

Пример: "Найди топ-5 пользователей за последний месяц по сумме заказов, исключая тестовые аккаунты" — промт выдаст запрос с GROUP BY и HAVING.

8. Анализ производительности и настройка конфигурации

Задача: Подобрать параметры postgresql.conf под ваше железо.

У меня сервер с [CPU/RAM/диски], версия PostgreSQL [X]. Какие значения для shared_buffers, work_mem, effective_cache_size и других параметров оптимальны? Обоснуй.

Пример: Промт порекомендует shared_buffers = 25% от RAM, work_mem = 32MB и т.д., ссылаясь на официальные руководства.

9. Объяснение и оптимизация запросов с подзапросами

Задача: Улучшить медленный запрос с EXISTS/NOT EXISTS.

Вот запрос с подзапросами: [SQL]. Проверь, можно ли заменить его на JOIN или LEFT JOIN с условием. Предложи оптимизированную версию с объяснением.

Пример: NOT EXISTS на большой таблице заменится на LEFT JOIN WHERE ... IS NULL, что быстрее.

10. Генерация тестовых данных

Задача: Создать реалистичные данные для проверки запросов.

Сгенерируй SQL для вставки 1000 тестовых записей в таблицы: [схема]. Данные должны быть реалистичными (имена, даты, числа). Используй generate_series и random().

Пример: Промт создаст INSERT с generate_series для наполнения таблицы пользователей.

11. Помощь с миграциями

Задача: Написать безопасную миграцию для изменения схемы.

Напиши миграцию для PostgreSQL для [описание изменения, например, добавление колонки с дефолтом и бэкофиллом]. Учти, что таблица большая, поэтому нужен безопасный способ (ADD COLUMN IF NOT EXISTS, UPDATE батчами).

Пример: Для добавления NOT NULL колонки промт предложит добавить с дефолтом, затем UPDATE, затем ALTER COLUMN SET NOT NULL.

12. Обучение и объяснение концепций

Задача: Быстро разобраться в новой теме (например, в GIN-индексах).

Объясни [тема, например, GIN-индексы] в PostgreSQL. Дай определение, пример создания, когда использовать, а когда нет. Приведи ссылки на официальную документацию.

Пример: Промт объяснит, что GIN-индексы ускоряют полнотекстовый поиск и JSONB, и приведет пример из документации.

Как я тестировал эти промты

Я прогнал каждый промт на реальных задачах из своей практики: оптимизация запросов для CRM, проектирование схемы для IoT-платформы, настройка прод-сервера. В 80% случаев результаты были полезными и применимыми. Главное — давать модели достаточно контекста и проверять ее рекомендации.

Заключение

Промты не заменят опытного DBA, но они снимают рутину и ускоряют поиск решений. Начните с одного-двух промтов из списка, адаптируйте под свои задачи — и вы почувствуете, как оптимизация перестает быть скучной. А если у вас есть свои любимые промты — поделитесь в комментариях!

← Все статьи

Комментарии

Читайте также

Зарплаты в DevOps и облаке 2026: анализ рынка, навыки и как повысить свой потенциал заработка

4 сентября 2026

Фриланс — работа на себя: ваше руководство на 2026 год по привлечению международных клиентов

4 сентября 2026

Возобновляемая энергия — чистые энергетические и зеленые технологии: руководство по карьере в зеленом переходе

4 сентября 2026

JavaScript для веб-разработки: освоение оптимизации производительности и асинхронных паттернов

4 сентября 2026

Валютное право 2026: тренды, прогнозы и как юристу остаться востребованным

4 сентября 2026

15 промтов ChatGPT для работы с базами данных: от быстрых запросов до грамотных миграций

4 сентября 2026

Мягкие навыки и карьера: Практический пример тайм-менеджмента и постановки целей от проект-менеджера

4 сентября 2026

12 промтов для MongoDB: от гибких схем до агрегаций и тонкой настройки запросов

4 сентября 2026

Platform Engineering — внутренние developer-платформы: как построить IDP и зачем вам этот курс

4 сентября 2026