14 промтов для PostgreSQL, которые заменят DBA при оптимизации запросов

Почему LLM становится вашим личным DBA

SQL — мощный, но коварный язык. Одна лишняя джойна может обрушить производительность, а неверный индекс — замедлить вставку. Хорошо, если рядом есть опытный DBA. А если нет? На помощь приходит LLM: правильно сформулированный промт превращает ChatGPT или Claude в эксперта, который разберёт план запроса, предложит индексы и перепишет JOIN'ы.

В этой подборке — 14 готовых промтов для PostgreSQL (и не только). Каждый промт — это диалог, где вы даёте контекст, а модель отвечает конкретными шагами. Мы покажем, как использовать их для анализа, оптимизации и рефакторинга. Вы получите не просто список, а систему, которая сэкономит часы работы.

Промты для анализа запросов

1. Разбор EXPLAIN ANALYZE

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

Ты — эксперт по PostgreSQL. Проанализируй вывод EXPLAIN (ANALYZE, BUFFERS) для запроса ниже. Объясни, какие узлы плана самые дорогие, почему выбран такой план, и предложи конкретные шаги по оптимизации.

Запрос:
[вставьте SQL]

План:
[вставьте вывод EXPLAIN]

Пример: Вы получаете Seq Scan по таблице orders с 1 млн строк. Модель укажет на отсутствие индекса по полю user_id, предложит создать его и покажет, как изменится план.

Что проверить первым Всегда запускайте EXPLAIN (ANALYZE, BUFFERS) с реальными данными, а не на пустой таблице — иначе план будет обманчивым.

2. Поиск неиспользуемых индексов

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

Проанализируй список индексов в PostgreSQL и определи, какие из них не используются или дублируются. Предложи, какие можно удалить без потери производительности. Учти, что некоторые индексы могут быть нужны для уникальных ограничений.

Список индексов:
[вывод pg_indexes или \di+]

Пример: Модель найдёт, что индекс по (user_id) и (user_id, created_at) дублируются, и посоветует оставить составной.

3. Оптимизация подзапросов

Задача: Переписать коррелированные подзапросы в JOIN'ы.
Промт:

Перепиши следующий SQL-запрос, заменив коррелированные подзапросы на JOIN'ы или оконные функции. Объясни, почему это может улучшить производительность. Приведи альтернативные варианты с указанием плюсов и минусов.

Запрос:
[вставьте SQL]

Пример: Запрос с WHERE EXISTS (SELECT 1 FROM orders WHERE ...) модель превратит в INNER JOIN, что часто быстрее.

Промты для рефакторинга JOIN'ов

4. Упрощение сложных JOIN'ов

Задача: Сделать запрос читаемым и быстрым.
Промт:

Ты — SQL-архитектор. Упрости следующий запрос с множеством JOIN'ов: убери лишние, перегруппируй, используй CTE для читаемости. Сохрани логику. Объясни каждое изменение.

Запрос:
[вставьте SQL]

Пример: Модель разобьёт запрос на CTE, выделив фильтрацию в отдельный шаг, что упростит отладку.

5. Замена LEFT JOIN на другие конструкции

Задача: Избежать дорогих LEFT JOIN, когда нужны только агрегаты.
Промт:

Предложи альтернативы LEFT JOIN в следующем запросе: можно ли использовать скалярный подзапрос, LATERAL JOIN или предварительную агрегацию? Сравни производительность.

Запрос:
[вставьте SQL]

Пример: Вместо LEFT JOIN (SELECT user_id, COUNT(*) FROM orders GROUP BY user_id) модель предложит LATERAL или подзапрос в SELECT, если нужно только одно значение.

Ключевое различие LEFT JOIN с агрегацией часто можно заменить на предварительно агрегированный CTE — это уменьшает объём соединяемых данных и ускоряет запрос в разы.

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

Задача: Убрать случайные CROSS JOIN, которые раздувают результат.
Промт:

Проверь запрос на наличие неявных декартовых произведений (CROSS JOIN). Если они есть, предложи, как их устранить, добавив правильные условия соединения.

Запрос:
[вставьте SQL]

Пример: Модель найдёт, что в FROM перечислены таблицы без WHERE, и подскажет добавить JOIN.

Промты для проектирования и индексов

7. Рекомендация индексов

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

На основе следующих запросов и структуры таблиц предложи индексы, которые ускорят выполнение. Укажи тип индекса (B-tree, GIN, BRIN), порядок столбцов, и обоснуй выбор.

Запросы:
[список SQL]

Структура таблиц:
[DDL]

Пример: Для запросов с фильтром по статусу и сортировкой по дате модель предложит составной индекс (status, created_at).

8. Анализ блокировок

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

Проанализируй вывод pg_locks и pg_stat_activity. Найди запросы, которые держат блокировки, и предложи, как их избежать (например, снизить уровень изоляции или переписать запрос).

Данные:
[вставьте вывод]

Пример: Модель покажет, что долгая транзакция с UPDATE блокирует другие, и посоветует разбить её на батчи.

Промты для написания запросов

9. Генерация SQL по описанию

Задача: Быстро написать запрос с нуля.
Промт:

Напиши SQL-запрос для PostgreSQL, который [описание задачи]. Используй только стандартные функции. Добавь комментарии, поясняющие логику.

Схема БД:
[DDL]

Пример: «Выведи топ-10 пользователей по сумме заказов за последний месяц» — модель сгенерирует запрос с JOIN и GROUP BY.

10. Перевод с других диалектов

Задача: Адаптировать запрос из MySQL в PostgreSQL.
Промт:

Переведи следующий запрос с MySQL на PostgreSQL. Учти различия в синтаксисе, функциях и поведении. Укажи, что изменилось.

Запрос MySQL:
[вставьте SQL]

Пример: Модель заменит IFNULL на COALESCE, а LIMIT x, y на LIMIT y OFFSET x.

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

Промты для отладки и безопасности

11. Поиск SQL-инъекций

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

Проверь следующий фрагмент кода на наличие SQL-инъекций. Предложи, как переписать его с использованием параметризованных запросов.

Код:
[вставьте код]

Пример: Модель укажет на конкатенацию строк в Python и покажет, как использовать psycopg2 с параметрами.

12. Валидация сложных условий

Задача: Убедиться, что WHERE не содержит логических ошибок.
Промт:

Проанализируй условие WHERE в запросе. Проверь, нет ли противоречий, лишних скобок или неверной приоритетности операторов. Предложи исправленный вариант.

Запрос:
[вставьте SQL]

Пример: Модель заметит, что AND и OR перепутаны, и расставит скобки.

Промты для документирования

13. Генерация комментариев к запросу

Задача: Сделать код понятным для команды.
Промт:

Добавь комментарии к следующему SQL-запросу, объяснив каждый шаг: что делает каждый JOIN, зачем нужна группировка, какие фильтры применяются. Пиши кратко и по делу.

Запрос:
[вставьте SQL]

Пример: Модель разметит CTE и основные блоки, что упростит поддержку.

14. Создание DDL с комментариями

Задача: Задокументировать схему БД.
Промт:

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

Описание полей:
[описание]

Пример: Модель создаст таблицу с COMMENT ON COLUMN, что полезно для новых разработчиков.

Как внедрить промты в работу

Начните с одного-двух промтов, которые закрывают вашу боль: например, разбор EXPLAIN или рефакторинг JOIN. Скопируйте шаблон, подставьте свои данные и сохраните в заметки. Со временем вы соберёте личную библиотеку промтов под свои задачи.

Помните: LLM не заменяет DBA, но становится мощным ассистентом. Проверяйте предложения на тестовой среде, измеряйте производительность до и после. Для углубления в тему оптимизации запросов и работы с индексами изучите наш Промты для код-ревью — многие принципы пересекаются.

Экспериментируйте, комбинируйте промты, и ваши запросы станут быстрее, а код — чище.

← Все статьи

Спросить AI по этой статье

Задайте вопрос по этой статье — ASI Biont ответит, опираясь на её текст.

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

ИИ для повседневной жизни: как построить реальный семейный бюджет с ChatGPT и Claude (без кода, 2026)

27 октября 2026

Цифровая гигиена за вечер: как найти утечки персональных данных и удалить информацию о себе из интернета

27 октября 2026

Сколько часов учить испанский до DELE 2026: разбор нормативов, статистики и гибридной подготовки с AI-репетитором

27 октября 2026

Юнит-тесты на Python с LLM: 12 промтов от pytest-фикстур до Hypothesis, которые закрывают непокрытые ветки

27 октября 2026

QA Automation Engineer: 5 мифов, которые стоят новичкам месяцев (и как их избежать)

11 ноября 2026

Расторжение договора с фитнес-клубом или салоном красоты и возврат денег: разбор условий, сроков и претензий в 2026 году

27 октября 2026

Full-Stack AI Engineer: как RAG-пайплайны, векторные базы данных и развертывание LLM на самом деле работают в продакшене

28 октября 2026

Сверка актов вручную или промптом: где LLM экономит бухгалтеру часы, а где создаёт риски

12 ноября 2026

Нейросети для начинающих: как понять, что происходит внутри ChatGPT и Midjourney, и начать использовать AI без кода

29 октября 2026