Сколько времени вы тратите на написание сложных SQL-запросов? А на разбор плана выполнения, который выводит из себя даже опытных разработчиков? Или на поиск индекса, который ускорит запрос в сто раз? Если вы похожи на меня, то часы, проведённые за такими задачами, — это часы, украденные у действительно важной работы. Но в 2026 году у нас есть секретное оружие: нейросети. Я собрал 15 промтов, которые проверены в бою и реально экономят время. От генерации запросов до автоматической оптимизации индексов — здесь вы найдёте готовые решения для повседневных задач. Поехали!
Базовый уровень: генерация и объяснение запросов
1. Генерация SQL-запроса по описанию
Задача: Получить готовый SQL-запрос на основе бизнес-требований, не вспоминая синтаксис.
Промт:
Ты — эксперт по SQL и PostgreSQL. Напиши запрос для [описание задачи]. Учитывай:
- Используй современный синтаксис (CTE, оконные функции, если уместно).
- Добавь комментарии к каждой части запроса.
- Объясни, как запрос работает, и какие индексы помогут его ускорить.
Пример результата:
Для задачи «вывести топ-5 клиентов по сумме заказов за последний месяц» нейросеть вернёт:
WITH recent_orders AS (
SELECT customer_id, SUM(amount) AS total
FROM orders
WHERE order_date >= NOW() - INTERVAL '1 month'
GROUP BY customer_id
)
SELECT c.name, r.total
FROM recent_orders r
JOIN customers c ON c.id = r.customer_id
ORDER BY r.total DESC
LIMIT 5;
И пояснит: используйте индекс на orders(order_date) и orders(customer_id). Это ускорит фильтрацию и группировку.
2. Перевод с MySQL на PostgreSQL
Задача: Адаптировать запрос, написанный для MySQL, под синтаксис PostgreSQL.
Промт:
Перепиши следующий MySQL-запрос для PostgreSQL, учитывая различия в синтаксисе: [вставьте запрос]. Объясни каждое изменение.
Пример:
MySQL: SELECT * FROM users LIMIT 10 OFFSET 20;
PostgreSQL: SELECT * FROM users LIMIT 10 OFFSET 20; (синтаксис совпадает, но нейросеть укажет на нюансы с LIMIT ALL и подскажет использовать FETCH FIRST для стандарта).
3. Объяснение сложного запроса
Задача: Понять, что делает чужой (или ваш собственный) запутанный SQL.
Промт:
Объясни, что делает этот SQL-запрос, шаг за шагом, простыми словами. Укажи, какие данные он возвращает, и есть ли потенциальные проблемы с производительностью: [вставьте запрос].
Пример:
Для запроса с несколькими JOIN и подзапросами нейросеть разложит логику по полочкам, отметит возможные декартовы произведения и предложит оптимизации.
4. Написание запроса с оконными функциями
Задача: Выполнить ранжирование, скользящие средние или сравнение с предыдущими строками.
Промт:
Используя оконные функции PostgreSQL, напиши запрос, который [описание задачи, например, выведет для каждого сотрудника его зарплату и среднюю зарплату по отделу].
Пример:
SELECT name, department, salary,
AVG(salary) OVER (PARTITION BY department) AS dept_avg
FROM employees;
Продвинутый уровень: оптимизация и индексы
5. Анализ плана выполнения
Задача: Понять, почему запрос медленный, и найти узкие места.
Промт:
Вот план выполнения запроса (EXPLAIN ANALYZE). Проанализируй его, укажи проблемные места (Seq Scan, высокий cost, большой buffers) и предложи конкретные меры для ускорения: [вставьте план].
Пример:
Нейросеть увидит Seq Scan на таблице с миллионом строк и порекомендует создать индекс, переписать JOIN или изменить настройки work_mem.
6. Генерация индексов для ускорения запросов
Задача: Автоматически предложить индексы для заданного набора запросов.
Промт:
Для следующих запросов предложи оптимальные индексы в PostgreSQL. Учитывай селективность, частоту использования и стоимость поддержки. Для каждого индекса объясни, почему он нужен: [перечислите запросы].
Пример:
Для запроса с фильтром по status и сортировкой по created_at нейросеть предложит составной индекс (status, created_at). Это подтверждается документацией PostgreSQL.
7. Поиск и устранение дедлоков
Задача: Разобраться с взаимоблокировками и предложить решение.
Промт:
Вот лог дедлока из PostgreSQL. Объясни, что произошло, и предложи способы избежать этого в будущем (например, порядок блокировок, уровень изоляции, retry-логика): [вставьте лог].
8. Настройка конфигурации PostgreSQL
Задача: Подобрать параметры конфигурации под конкретную нагрузку.
Промт:
У меня PostgreSQL 16, сервер с [характеристики]. Моя нагрузка: [описание]. Какие параметры в postgresql.conf стоит изменить и почему? Дай конкретные значения.
Экспертный уровень: сложные сценарии
9. Генерация хранимых процедур и триггеров
Задача: Создать сложную бизнес-логику на стороне БД.
Промт:
Напиши хранимую процедуру на PL/pgSQL, которая [описание задачи]. Включи обработку ошибок и транзакции.
Пример:
Процедура для массового обновления с проверкой прав пользователя.
10. Работа с JSONB: продвинутые запросы
Задача: Извлечь данные из JSONB-полей, скомбинировать с реляционными.
Промт:
У меня таблица с JSONB-полем. Напиши запрос, который [описание задачи, например, выведет все элементы массива, удовлетворяющие условию]. Используй функции jsonb_array_elements, jsonb_path_query и т.д.
11. Оптимизация полнотекстового поиска
Задача: Настроить полнотекстовый поиск с учётом русского языка.
Промт:
Настрой полнотекстовый поиск в PostgreSQL для русского языка. Создай tsvector, tsquery, GIN-индекс. Приведи пример запроса с учётом морфологии.
12. Анализ и оптимизация запросов с помощью pg_stat_statements
Задача: Использовать статистику для поиска самых ресурсоёмких запросов.
Промт:
Вот вывод pg_stat_statements. Определи топ-5 самых медленных запросов и предложи способы их оптимизации: [вставьте вывод].
13. Сравнение производительности: CTE vs подзапросы
Задача: Определить, что быстрее в конкретном случае.
Промт:
Сравни производительность следующих двух запросов в PostgreSQL. Объясни, как оптимизатор обрабатывает CTE (материализация vs инлайн) и какой вариант лучше для моего случая: [запросы].
14. Партиционирование таблиц: проектирование и запросы
Задача: Спроектировать партиционирование для большой таблицы.
Промт:
У меня таблица с [описание данных] и она быстро растёт. Предложи стратегию партиционирования (по диапазону, списку, хешу) и приведи пример создания партиций и запросов, которые используют партиционирование.
15. Имитация нагрузочного теста и поиск бутылочных горлышек
Задача: Сгенерировать тестовые данные и запросы для нагрузочного теста.
Промт:
Сгенерируй SQL для вставки 1 миллиона тестовых строк в таблицу с [полями]. Предложи набор запросов, которые имитируют реальную нагрузку, и укажи, какие метрики (pg_stat_activity, pg_locks) нужно мониторить.
Как я использую эти промты в реальной работе
Недавно мне нужно было оптимизировать отчёт, который выполнялся 15 секунд. Я скормил нейросети план выполнения, и она сразу указала на Seq Scan по таблице с миллионами строк и посоветовала создать индекс. Через 10 минут запрос стал выполняться за 0.3 секунды. Такие случаи не единичны.
Заключение
Нейросети не заменят вас, но они снимут рутину и ускорят процесс. Начните с базовых промтов, постепенно переходя к сложным. Помните: всегда проверяйте сгенерированный код — ИИ может ошибаться, особенно в специфических настройках. Если вы хотите систематизировать знания и научиться применять ИИ в работе с базами данных, приходите на наш курс. А пока — пробуйте эти промты, и вы почувствуете разницу. Удачи в запросах!
Комментарии