В 2026 году большие языковые модели (LLM) перестали быть игрушкой и стали рабочим инструментом для инженеров данных и аналитиков. Однако, чтобы получить от них реальную пользу, нужны правильно составленные промты. В этой статье я собрал 12 проверенных сценариев — от оптимизации запросов до проектирования схем — с примерами и пояснениями. Вы узнаете, как использовать ChatGPT, Claude или локальные модели для ускорения рутинных задач, снижения нагрузки на БД и повышения качества кода.
Материал основан на моём опыте работы с PostgreSQL 16 и 17, а также на рекомендациях из официальной документации PostgreSQL и блогов таких экспертов, как Lukas Fittl (pganalyze) и Craig Kerstiens. Все примеры синтаксиса проверены на реальных базах.
Базовый уровень: промты для повседневных задач
1. Генерация SQL-запроса по текстовому описанию
Задача: быстро получить рабочий SQL-запрос без ручного написания.
Промт:
Ты — опытный PostgreSQL-разработчик. Напиши SQL-запрос для следующей задачи: [описание]. Используй синтаксис PostgreSQL 16. Если нужно, добавь комментарии, поясняющие логику. Верни только SQL-код без лишнего текста.
Пример результата: для задачи «вывести топ-5 клиентов по сумме заказов за последний месяц» модель сгенерирует:
SELECT c.customer_id, c.name, SUM(o.total_amount) AS total_spent
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
WHERE o.order_date >= date_trunc('month', CURRENT_DATE - INTERVAL '1 month')
AND o.order_date < date_trunc('month', CURRENT_DATE)
GROUP BY c.customer_id, c.name
ORDER BY total_spent DESC
LIMIT 5;
2. Объяснение существующего запроса
Задача: разобраться, что делает сложный запрос, доставшийся в наследство.
Промт:
Объясни, что делает следующий SQL-запрос, построчно. Укажи, какие таблицы используются, какие условия применяются и какой результат ожидается. Если есть потенциальные проблемы, отметь их.
```sql
[вставьте запрос]
**Пример результата:** модель разберёт запрос, укажет на неявные JOIN, возможные декартовы произведения и предложит упрощения.
### 3. Форматирование и приведение к стилю
**Задача:** привести запросы к единому стилю (например, как в dbt style guide).
**Промт:**
Отформатируй следующий SQL-запрос в соответствии с dbt SQL style guide: ключевые слова заглавными, отступы в 4 пробела, каждый столбец на новой строке. Верни только исправленный код.
[вставьте запрос]
**Пример результата:** запрос станет читаемым и единообразным.
### 4. Генерация тестовых данных
**Задача:** создать реалистичный набор данных для тестирования.
**Промт:**
Сгенерируй INSERT-запросы для PostgreSQL, которые заполнят таблицу users (столбцы: id serial, name text, email text, created_at timestamptz) 100 случайными записями. Используй реалистичные имена и email. Учти, что created_at должен быть в пределах последнего года.
**Пример результата:** модель выдаст 100 INSERT-ов или один INSERT с generate_series.
## Продвинутый уровень: оптимизация и анализ
### 5. Анализ EXPLAIN ANALYZE
**Задача:** понять, почему запрос выполняется медленно.
**Промт:**
Проанализируй вывод EXPLAIN (ANALYZE, BUFFERS) для следующего запроса. Определи узкие места: последовательные сканирования, неэффективные соединения, недостающие индексы. Предложи конкретные шаги по оптимизации.
[вставьте вывод EXPLAIN]
**Пример результата:** модель укажет на Seq Scan по большой таблице и предложит создать индекс на столбец в условии WHERE.
### 6. Рекомендация индексов
**Задача:** подобрать оптимальные индексы для набора запросов.
**Промт:**
У меня есть следующие запросы к PostgreSQL. Проанализируй их и предложи индексы, которые ускорят выполнение. Учти, что таблицы большие, и избегай избыточных индексов. Для каждого индекса объясни, почему он нужен.
Запрос 1: ...
Запрос 2: ...
**Пример результата:** модель порекомендует составной индекс (customer_id, order_date) для ускорения фильтрации и сортировки.
### 7. Переписывание запроса с CTE на оконные функции
**Задача:** упростить сложный запрос с множеством подзапросов.
**Промт:**
Перепиши следующий запрос, используя оконные функции вместо коррелированных подзапросов. Цель — повысить производительность и читаемость.
[вставьте запрос]
**Пример результата:** модель заменит подзапросы на OVER (PARTITION BY ...) и объяснит выгоду.
### 8. Настройка autovacuum для таблицы
**Задача:** уменьшить bloat и улучшить производительность.
**Промт:**
У меня есть таблица events с интенсивной записью (10 тыс. вставок в секунду). Текущие параметры autovacuum стандартные. Предложи оптимальные настройки autovacuum для этой таблицы, учитывая, что PostgreSQL 16. Объясни, как эти параметры повлияют на производительность и bloat.
**Пример результата:** модель порекомендует увеличить autovacuum_vacuum_scale_factor до 0.01 и уменьшить autovacuum_vacuum_threshold.
## Экспертный уровень: проектирование и архитектура
### 9. Проектирование схемы БД с нуля
**Задача:** создать оптимальную схему для нового проекта.
**Промт:**
Спроектируй схему базы данных PostgreSQL для интернет-магазина. Основные сущности: товары, категории, заказы, пользователи, платежи. Учти нормализацию до 3НФ, предложи типы данных, первичные и внешние ключи, индексы. Выдай DDL-скрипт с комментариями.
**Пример результата:** модель сгенерирует CREATE TABLE с правильно подобранными типами (например, numeric для денег) и индексами.
### 10. Миграция с MySQL на PostgreSQL
**Задача:** перенести существующую схему с минимальными изменениями.
**Промт:**
Ниже — DDL из MySQL. Перепиши его для PostgreSQL, учитывая различия в типах данных, автоинкременте, синтаксисе индексов. Сохрани имена таблиц и столбцов. Добавь комментарии о том, что было изменено.
[вставьте MySQL DDL]
**Пример результата:** модель заменит AUTO_INCREMENT на GENERATED BY DEFAULT AS IDENTITY, TINYINT на SMALLINT и т.д.
### 11. Партиционирование большой таблицы
**Задача:** разбить таблицу на партиции для улучшения управления и производительности.
**Промт:**
У меня есть таблица logs с 500 млн строк, содержащая столбец created_at (timestamp). Предложи стратегию партиционирования по диапазону дат. Напиши DDL для создания партиционированной таблицы и нескольких партиций. Объясни, как это повлияет на запросы и обслуживание.
**Пример результата:** модель предложит партиционирование по месяцам с помощью PARTITION BY RANGE.
### 12. Аудит безопасности и прав доступа
**Задача:** проверить, что права доступа настроены безопасно.
**Промт:**
Проанализируй следующие GRANT-ы в PostgreSQL. Укажи на избыточные привилегии, потенциальные угрозы и предложи минимально необходимые права для роли app_user, которая должна только читать и писать в таблицы схемы public.
[вставьте GRANT-ы]
```
Пример результата: модель порекомендует отозвать права на CREATE и ограничиться SELECT, INSERT, UPDATE, DELETE.
Как использовать эти промты на практике
Все промты стоит адаптировать под ваш контекст: указывайте версию PostgreSQL, размер таблиц, особенности нагрузки. Помните, что LLM не заменяет DBA, а лишь ускоряет рутину. Всегда проверяйте сгенерированный код на тестовой среде.
| Уровень | Для кого | Основная цель |
|---|---|---|
| Базовый | Новички, аналитики | Быстрое написание и понимание запросов |
| Продвинутый | Разработчики, DBA | Оптимизация и тюнинг |
| Экспертный | Архитекторы, тимлиды | Проектирование и миграции |
Источники и полезные ссылки
- Официальная документация PostgreSQL: https://www.postgresql.org/docs/current/
- Блог pganalyze: https://pganalyze.com/blog
- Use The Index, Luke: https://use-the-index-luke.com/
- Документация по EXPLAIN: https://www.postgresql.org/docs/current/using-explain.html
Эти промты — не догма, а отправная точка. Экспериментируйте, комбинируйте, делитесь своими находками. Если вы только начинаете путь в аналитике и хотите глубже освоить работу с данными, обратите внимание на курсы asibiont.com — там вы найдёте структурированные материалы по SQL, аналитике и AI-инструментам. Удачи в оптимизации!
Комментарии