Вы когда-нибудь тратили полдня на один SQL-запрос, а потом оказывалось, что нужно было просто добавить LEFT JOIN? Знакомая боль. Я тоже через это проходил, пока не начал активно использовать ИИ-промты для работы с базами данных. Однажды мой коллега — аналитик в крупном банке — пожаловался, что еженедельные отчёты по клиентским транзакциям занимают у него по 6 часов: он вручную писал сложные запросы с множественными джойнами, подзапросами и оконными функциями. Я поделился с ним подборкой промтов, которые использую сам, и через месяц он сказал, что теперь укладывается в 20 минут. В этой статье я собрал 9 проверенных промтов, которые реально экономят часы. Каждый — с примером, как я его применяю в работе.
1. Промт для объяснения сложного запроса
Когда использовать: Когда вы получаете чужой SQL-код или возвращаетесь к своему старому запросу и не понимаете, что там происходит.
Суть промта: Попросите ИИ объяснить запрос простыми словами, разбив его на логические части.
Пример промта:
Объясни следующий SQL-запрос для аналитика, который знает SQL, но не знаком с бизнес-логикой. Разбей на шаги и поясни, что делает каждая часть:
WITH monthly_sales AS (
SELECT
DATE_TRUNC('month', order_date) AS month,
product_id,
SUM(amount) AS total_amount
FROM orders
WHERE status = 'completed'
GROUP BY 1, 2
),
ranked_products AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY month ORDER BY total_amount DESC) AS rn
FROM monthly_sales
)
SELECT month, product_id, total_amount
FROM ranked_products
WHERE rn <= 3;
Что делает ИИ: Он объяснит, что запрос сначала агрегирует продажи по месяцам и продуктам, затем ранжирует продукты по сумме продаж в каждом месяце и оставляет только топ-3. Вы быстро поймёте логику и сможете найти потенциальные ошибки.
Мой совет: Используйте этот промт, когда берёте в работу легаси-код. Это сэкономит вам часы разбора чужих мыслей.
2. Промт для оптимизации медленного запроса
Когда использовать: Когда запрос выполняется слишком долго, и нужно его ускорить.
Суть промта: Попросите ИИ найти узкие места и предложить оптимизации.
Пример промта:
Вот SQL-запрос, который выполняется 45 секунд на таблице с 10 миллионами строк. Проанализируй его и предложи конкретные оптимизации: индексы, переписывание JOIN, разбиение на подзапросы и т.д. Объясни, почему каждая оптимизация поможет.
SELECT c.customer_name, SUM(o.amount) AS total_spent
FROM customers c
LEFT JOIN orders o ON c.customer_id = o.customer_id
WHERE o.order_date >= '2025-01-01'
AND c.country = 'Россия'
GROUP BY c.customer_name
ORDER BY total_spent DESC;
Что делает ИИ: Он заметит, что фильтр по order_date в WHERE превращает LEFT JOIN в INNER JOIN (так как условие на правую таблицу), и предложит перенести условие в JOIN. Также посоветует создать составной индекс на orders(customer_id, order_date). В итоге запрос может ускориться в разы.
Мой опыт: Я часто использую этот промт для запросов, которые работают дольше 10 секунд. Обычно ИИ находит 2-3 улучшения, и время выполнения падает в 5-10 раз.
3. Промт для генерации SQL по описанию на естественном языке
Когда использовать: Когда нужно быстро получить запрос под конкретную задачу, особенно если вы не уверены в синтаксисе.
Суть промта: Опишите задачу словами, укажите структуру таблиц, и ИИ напишет SQL.
Пример промта:
У меня есть таблицы:
- students (id, name, group_id)
- groups (id, name)
- grades (student_id, subject, score, date)
Напиши SQL-запрос, который выводит для каждой группы средний балл по математике за последний семестр (даты с '2026-02-01' по '2026-05-31'). Отсортируй по убыванию среднего балла.
Что делает ИИ: Сгенерирует запрос вроде:
SELECT g.name, AVG(gr.score) AS avg_score
FROM groups g
JOIN students s ON g.id = s.group_id
JOIN grades gr ON s.id = gr.student_id
WHERE gr.subject = 'математика'
AND gr.date BETWEEN '2026-02-01' AND '2026-05-31'
GROUP BY g.name
ORDER BY avg_score DESC;
Мой совет: Всегда проверяйте сгенерированный код на небольших данных, но в 90% случаев он работает с первого раза.
4. Промт для поиска ошибок в запросе
Когда использовать: Когда запрос возвращает неожиданные результаты или ошибку.
Суть промта: Вставьте запрос и опишите проблему — ИИ найдёт логические ошибки.
Пример промта:
Этот запрос должен выводить клиентов, у которых нет заказов за последние 30 дней, но он возвращает пустой результат. Найди ошибку.
SELECT * FROM customers
WHERE customer_id NOT IN (
SELECT customer_id FROM orders
WHERE order_date > CURRENT_DATE - INTERVAL '30 days'
);
Что делает ИИ: Укажет, что NOT IN не работает, если подзапрос возвращает NULL (например, если есть заказы с customer_id = NULL). Предложит использовать NOT EXISTS.
Мой опыт: Это один из самых частых кейсов. Промт экономит мне время на отладке.
5. Промт для написания оконных функций
Когда использовать: Когда нужны ранжирование, скользящие средние или кумулятивные суммы.
Суть промта: Опишите задачу, и ИИ напишет оконную функцию с правильным синтаксисом.
Пример промта:
У меня есть таблица sales (id, product_id, sale_date, amount). Напиши запрос, который для каждого продукта выводит накопительную сумму продаж по датам. Используй оконную функцию.
Что делает ИИ: Сгенерирует:
SELECT
product_id,
sale_date,
amount,
SUM(amount) OVER (PARTITION BY product_id ORDER BY sale_date) AS cumulative_sum
FROM sales;
Мой совет: Если вы не уверены в синтаксисе ROWS BETWEEN или RANGE, попросите ИИ объяснить различия.
6. Промт для переписывания подзапросов в JOIN
Когда использовать: Когда запрос с подзапросами работает медленно, а нужно ускорить.
Суть промта: Попросите ИИ переписать запрос с использованием JOIN.
Пример промта:
Перепиши следующий запрос, используя JOIN вместо подзапросов. Объясни, почему JOIN может быть эффективнее.
SELECT * FROM products
WHERE category_id IN (
SELECT category_id FROM categories
WHERE active = true
);
Что делает ИИ: Предложит:
SELECT p.*
FROM products p
JOIN categories c ON p.category_id = c.category_id
WHERE c.active = true;
Мой опыт: Это помогает не только ускорить запрос, но и сделать его читабельнее.
7. Промт для создания тестовых данных
Когда использовать: Когда нужно быстро сгенерировать синтетические данные для проверки запроса.
Суть промта: Попросите ИИ написать скрипт генерации данных.
Пример промта:
Сгенерируй SQL-скрипт для вставки 100 тестовых строк в таблицу employees (id, name, department, salary). Данные должны быть реалистичными: разные отделы, зарплаты от 30000 до 150000, имена российские.
Что делает ИИ: Выдаст скрипт с INSERT и GENERATE_SERIES или просто набором значений. Это удобно для проверки логики без реальных данных.
Мой совет: Используйте этот промт, когда нужно быстро проверить гипотезу, не дожидаясь доступа к продакшену.
8. Промт для документирования запроса
Когда использовать: Когда нужно добавить комментарии к сложному запросу для коллег или будущего себя.
Суть промта: Попросите ИИ добавить пояснения к каждой части запроса.
Пример промта:
Добавь подробные комментарии к этому запросу, чтобы новичок в команде мог понять его логику. Не меняй сам SQL.
SELECT
product_category,
COUNT(*) AS total_orders,
AVG(order_amount) AS avg_amount
FROM orders
WHERE order_date >= '2026-01-01'
GROUP BY product_category
HAVING COUNT(*) > 100;
Что делает ИИ: Добавит комментарии вроде -- Фильтруем заказы за текущий год, -- Группируем по категориям и т.д. Это улучшает поддерживаемость кода.
9. Промт для обучения и разбора новых функций
Когда использовать: Когда нужно быстро разобраться в незнакомой функции или синтаксисе.
Суть промта: Попросите ИИ объяснить функцию на примере.
Пример промта:
Объясни, как работает функция STRING_AGG в PostgreSQL, с примером использования. Покажи, как с её помощью вывести список имен через запятую для каждого отдела.
Что делает ИИ: Расскажет, что STRING_AGG агрегирует строки, покажет синтаксис и пример:
SELECT department, STRING_AGG(name, ', ')
FROM employees
GROUP BY department;
Мой опыт: Это отличный способ быстро освоить новые возможности СУБД без чтения длинной документации.
Как я применяю эти промты в работе
Я работаю с PostgreSQL ежедневно. Мой типичный рабочий процесс: сначала формулирую задачу на естественном языке, получаю черновой запрос, затем прогоняю его через оптимизатор (промт №2) и тестирую на выборке. Это сокращает время разработки отчёта с нескольких часов до 30-40 минут. Для сложных аналитических задач использую промт №5 для оконных функций — они часто оказываются производительнее групповых агрегаций.
Итог
Эти 9 промтов — мой минимальный набор для ежедневной работы с SQL. Они не заменяют понимания баз данных, но снимают рутину и ускоряют процесс. Начните с одного-двух, которые ближе к вашим задачам, и вы увидите разницу. А если у вас есть свои проверенные промты — делитесь в комментариях, я всегда рад пополнить коллекцию.
Попробуйте применить эти промты уже сегодня: возьмите свой самый медленный запрос и скормите его ИИ. Уверен, результат вас удивит.
Комментарии