Мы — команда ASI Biont. Как и многие, мы тонули в рутине: однотипные SQL-запросы, отчёты, выгрузки. Каждый запрос — это часы работы, особенно когда данных много, а дедлайны горят. Но однажды мы решили попробовать делегировать часть этой работы нейросетям. Результат превзошёл ожидания: время на написание и оптимизацию запросов сократилось на 70%. В этой статье я поделюсь нашим арсеналом промтов — готовых шаблонов, которые вы можете скопировать и использовать прямо сейчас.
Мы не будем рассказывать о волшебных таблетках. Вместо этого — конкретные примеры, проверенные на реальных задачах. Каждый промт решает определённую проблему: от генерации отчётов до оптимизации медленных запросов. Вы узнаете, как заставить нейросеть писать корректный SQL, объяснять сложные запросы и даже генерировать тестовые данные. Поехали!
1. Промт «Перевод с человеческого на SQL»
Когда использовать: когда нужно быстро получить SQL-запрос по описанию задачи на естественном языке, но вы не хотите писать его вручную.
Промт:
Ты — эксперт по SQL и базам данных. Переведи следующее описание задачи в SQL-запрос. Учитывай синтаксис PostgreSQL. Если в описании есть неоднозначности, задай уточняющие вопросы. Верни только SQL-код без пояснений.
Описание: {опишите задачу здесь}
Пример использования:
Допустим, нам нужно получить список клиентов, сделавших заказы за последний месяц, вместе с суммой их покупок. Вставляем описание в промт:
Описание: Покажи имена клиентов и общую сумму их заказов за последний месяц, отсортированных по сумме убыванию.
Нейросеть вернёт что-то вроде:
SELECT c.name, SUM(o.amount) AS total_spent
FROM customers c
JOIN orders o ON c.id = o.customer_id
WHERE o.created_at >= NOW() - INTERVAL '1 month'
GROUP BY c.name
ORDER BY total_spent DESC;
Результат: мы экономим 15–20 минут на каждом простом запросе, особенно когда нужно быстро проверить гипотезу или сделать выгрузку для отчёта.
2. Промт «Оптимизация медленного запроса»
Когда использовать: когда запрос выполняется слишком долго, и вы подозреваете, что дело в неоптимальной структуре.
Промт:
Ты — опытный DBA. Проанализируй следующий SQL-запрос и предложи оптимизации. Учитывай использование индексов, подзапросов, JOIN'ов. Объясни, какие изменения помогут ускорить выполнение, и покажи исправленный запрос. Если нужно, предложи создать дополнительные индексы.
Запрос: {вставьте ваш запрос}
Пример: у нас был запрос, который выполнялся 5 секунд из-за вложенного подзапроса. Нейросеть предложила использовать JOIN вместо подзапроса и добавить индекс на поле status:
-- Было (5 сек)
SELECT * FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE status = 'active');
-- Стало (0.5 сек)
SELECT o.* FROM orders o JOIN customers c ON o.customer_id = c.id WHERE c.status = 'active';
CREATE INDEX idx_customers_status ON customers(status);
Результат: время выполнения сократилось в 10 раз. Кстати, по данным PostgreSQL Wiki, использование JOIN вместо IN-подзапросов часто даёт значительный выигрыш.
3. Промт «Объяснение сложного запроса»
Когда использовать: когда вы получили SQL-запрос от коллеги или из старого кода и не понимаете, что он делает.
Промт:
Ты — SQL-эксперт. Объясни, что делает следующий запрос, простыми словами. Разбей на шаги, поясни назначение каждой части. Если в запросе есть потенциальные проблемы (например, декартово произведение), укажи на них.
Запрос: {вставьте запрос}
Пример: Наш коллега написал сложный запрос с несколькими CTE и оконными функциями. Вместо того чтобы разбираться час, мы скормили его нейросети. Она объяснила, что запрос вычисляет скользящее среднее продаж по дням и отфильтровывает дни с аномалиями. Это сэкономило нам время и помогло понять логику.
4. Промт «Генерация тестовых данных»
Когда использовать: когда нужно заполнить базу данных тестовыми данными для разработки или тестирования.
Промт:
Ты — генератор тестовых данных. Создай SQL-скрипт для вставки {количество} записей в таблицу {имя таблицы} со следующими полями: {перечислите поля}. Используй реалистичные данные (имена, даты, числа). Учитывай ограничения (NULL, UNIQUE, FK). Верни только SQL.
Пример: Нам нужно 1000 тестовых заказов для таблицы orders с полями id, customer_id, amount, created_at. Промт:
Создай SQL-скрипт для вставки 1000 записей в таблицу orders с полями id (serial), customer_id (integer, от 1 до 500), amount (numeric, от 10 до 1000), created_at (timestamp, за последний год).
Нейросеть сгенерировала скрипт с использованием generate_series и случайных чисел. Это сэкономило нам часы ручной работы.
5. Промт «Написание функции или процедуры»
Когда использовать: когда нужна функция на PL/pgSQL для повторяющегося действия.
Промт:
Ты — разработчик PostgreSQL. Напиши функцию (или процедуру) на PL/pgSQL, которая {опишите задачу}. Учитывай обработку ошибок и производительность. Верни код функции с комментариями.
Пример: Нам нужна функция, которая обновляет дату последней активности пользователя. Промт:
Напиши функцию update_last_active(user_id integer), которая обновляет поле last_active в таблице users на текущую метку времени.
Нейросеть вернула готовую функцию с BEGIN ... END;. Мы просто вставили её в миграцию.
6. Промт «Анализ плана выполнения»
Когда использовать: когда нужно понять, почему запрос медленный, и что говорит EXPLAIN.
Промт:
Ты — эксперт по оптимизации PostgreSQL. Вот результат EXPLAIN ANALYZE для запроса. Проанализируй его, укажи узкие места (сканирование, сортировка, соединения) и предложи конкретные меры для ускорения.
EXPLAIN ANALYZE результат: {вставьте вывод}
Пример: Мы вставили вывод EXPLAIN ANALYZE для нашего медленного запроса. Нейросеть заметила, что используется Seq Scan на большой таблице, и предложила добавить индекс. После добавления индекса время выполнения упало с 3 секунд до 0.1 секунды.
7. Промт «Сравнение двух SQL-запросов»
Когда использовать: когда вы не уверены, какой из двух вариантов запроса эффективнее.
Промт:
Сравни два SQL-запроса. Оцени их производительность, читаемость и корректность. Какой из них лучше и почему? Если можно улучшить, предложи третий вариант.
Запрос 1: {текст}
Запрос 2: {текст}
Пример: У нас было два варианта выборки последних заказов: через оконную функцию и через подзапрос с LIMIT. Нейросеть объяснила, что оконная функция более гибкая, но в данном случае подзапрос быстрее из-за меньшего объёма данных. Мы выбрали подзапрос.
8. Промт «Генерация отчёта по данным»
Когда использовать: когда нужно получить сводную информацию в виде отчёта (например, продажи по месяцам).
Промт:
Ты — аналитик данных. Напиши SQL-запрос для получения следующего отчёта: {опишите отчёт}. Используй группировки, агрегатные функции, сортировку. Если нужно, добавь комментарии к запросу.
Пример: Отчёт: продажи по категориям товаров за последний квартал. Промт:
Напиши SQL-запрос для получения суммы продаж по категориям товаров за последний квартал, отсортированный по сумме убыванию.
Нейросеть сгенерировала запрос с JOIN'ом таблиц products и order_items. Мы сразу получили нужные данные для дашборда.
9. Промт «Обучение новичка»
Когда использовать: когда нужно быстро объяснить основы SQL коллеге или самому себе.
Промт:
Ты — преподаватель SQL. Объясни {тему, например, JOIN} простыми словами, приведи примеры кода и объясни, когда это использовать. Начни с базовых понятий.
Пример: Мы использовали этот промт, чтобы разобраться с оконными функциями. Нейросеть дала понятное объяснение с примерами ROW_NUMBER() и SUM() OVER (). Это помогло нам писать более сложные запросы.
10. Промт «Поиск ошибок в запросе»
Когда использовать: когда запрос выдаёт неожиданный результат или ошибку.
Промт:
Ты — отладчик SQL. Вот запрос, который выдаёт ошибку (или неверный результат). Найди проблему и предложи исправление.
Запрос: {вставьте запрос}
Ошибка: {текст ошибки, если есть}
Пример: У нас была ошибка синтаксиса из-за неправильно расставленных кавычек. Нейросеть мгновенно нашла проблему и предложила исправление. Это сэкономило нам 10 минут на поиск.
11. Промт «Советы по индексации»
Когда использовать: когда вы не уверены, какие индексы создать для ускорения запросов.
Промт:
Ты — эксперт по индексам в PostgreSQL. Проанализируй таблицу {имя таблицы} с полями {перечислите поля} и предложи оптимальные индексы для следующих запросов: {перечислите запросы}. Объясни, почему эти индексы помогут.
Пример: Мы использовали этот промт для таблицы orders. Нейросеть предложила составной индекс на (customer_id, created_at) для ускорения выборки заказов по клиенту за период. Это значительно ускорило наши отчёты.
12. Промт «Автоматизация рутинных задач»
Когда использовать: когда вы часто выполняете однотипные запросы и хотите автоматизировать их написание.
Промт:
Ты — помощник DBA. Создай шаблон SQL-запроса для {тип задачи, например, еженедельный отчёт}. Используй параметры, чтобы можно было подставлять даты или другие значения. Покажи пример вызова.
Пример: Мы создали шаблон для еженедельного отчёта по продажам с параметром даты начала. Теперь нам нужно только подставить нужную дату — и запрос готов. Это сократило время на 70%!
Что дальше?
Эти промты — наш рабочий инструмент. Они не заменяют понимания SQL, но экономят часы на рутине. Мы надеемся, что они помогут и вам. Попробуйте адаптировать их под свои задачи. Если у вас есть свои проверенные промты — поделитесь в комментариях, будем рады узнать что-то новое!
А если вы хотите автоматизировать работу с базами данных ещё сильнее, обратите внимание на AI-агента ASI Biont — он умеет выполнять такие задачи прямо через интерфейс без копипасты. Но это уже другая история.
Комментарии