Работа с базами данных — это постоянный компромисс между скоростью, точностью и читаемостью кода. Вы пишете запрос, оптимизируете его, переписываете снова, и всё равно на выполнение уходят часы. Но что, если часть этой рутины можно делегировать AI? Я собрал 12 промтов, которые реально ускоряют работу с SQL, PostgreSQL и MongoDB. Они проверены на практике и подходят как для ежедневных задач, так и для сложных аналитических проектов. Никакой воды — только готовые шаблоны, которые можно скопировать и использовать прямо сейчас.
1. Универсальный оптимизатор SQL-запросов
Для чего: Быстро найти узкие места в существующем запросе и получить оптимизированную версию с пояснениями.
Промт:
Ты — эксперт по оптимизации SQL. Проанализируй следующий запрос и предложи улучшения: [вставьте запрос].
Укажи: (1) конкретные проблемы производительности, (2) оптимизированную версию запроса, (3) объяснение каждого изменения. Используй индексы, подзапросы или CTE, если это уместно.
Пример использования:
Допустим, у вас есть запрос, который выполняется 15 секунд.
SELECT u.name, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.created_at >= '2026-01-01'
GROUP BY u.id, u.name
HAVING COUNT(o.id) > 5;
AI предложит добавить индекс на orders.user_id и users.created_at, заменить LEFT JOIN на INNER JOIN (если null-значения не нужны), и переписать с использованием CTE для читаемости. В итоге запрос ускорится в несколько раз.
2. Генератор сложных JOIN-запросов
Для чего: Когда нужно объединить данные из нескольких таблиц с нестандартными условиями.
Промт:
Сгенерируй SQL-запрос для PostgreSQL, который объединяет таблицы [таблица1] и [таблица2] по полям [поле1] и [поле2]. Используй LEFT JOIN и включи в результат только строки, где [условие]. Также добавь агрегацию с GROUP BY и сортировку по [поле]. Объясни, как работает запрос.
Пример использования:
Нужно получить список клиентов с их последним заказом. Промт: "Сгенерируй SQL-запрос для PostgreSQL, который объединяет таблицы customers и orders по полю customer_id. Используй LEFT JOIN и включи только клиентов с датой регистрации после 2025-01-01. Добавь агрегацию MAX(order_date) и сортировку по name." AI вернёт:
SELECT c.name, MAX(o.order_date) AS last_order_date
FROM customers c
LEFT JOIN orders o ON c.customer_id = o.customer_id
WHERE c.registration_date > '2025-01-01'
GROUP BY c.customer_id, c.name
ORDER BY c.name;
3. Написание хранимой процедуры для PostgreSQL
Для чего: Автоматизация повторяющихся операций, например, ежемесячного обновления агрегированных данных.
Промт:
Напиши хранимую процедуру на PL/pgSQL для PostgreSQL, которая выполняет [описание задачи]. Процедура должна принимать параметры [параметры], обрабатывать ошибки с помощью EXCEPTION и логировать выполнение в таблицу [таблица логов]. Предоставь полный код и пример вызова.
Пример использования:
Нужно создать процедуру, которая архивирует заказы старше 3 лет.
CREATE OR REPLACE FUNCTION archive_old_orders(archive_before_date DATE)
RETURNS VOID AS $$
BEGIN
INSERT INTO orders_archive
SELECT * FROM orders WHERE order_date < archive_before_date;
DELETE FROM orders WHERE order_date < archive_before_date;
INSERT INTO archive_log(action, timestamp) VALUES ('archived', NOW());
EXCEPTION
WHEN OTHERS THEN
RAISE NOTICE 'Error: %', SQLERRM;
END;
$$ LANGUAGE plpgsql;
AI выдаст подобный код с комментариями.
4. Генератор MongoDB-агрегаций
Для чего: Создание сложных пайплайнов агрегации для MongoDB без необходимости помнить все операторы.
Промт:
Создай агрегационный пайплайн MongoDB для коллекции [коллекция], который выполняет: (1) фильтрацию по полю [поле] с условием [условие], (2) группировку по [поле] с вычислением среднего значения [поле2], (3) сортировку по убыванию результата. Предоставь код на JavaScript и объясни каждый этап.
Пример использования:
Нужно найти средний чек по каждому клиенту за последний месяц.
db.orders.aggregate([
{ $match: { order_date: { $gte: new Date('2026-07-01') } } },
{ $group: { _id: "$customer_id", avg_amount: { $avg: "$total" } } },
{ $sort: { avg_amount: -1 } }
]);
AI сгенерирует такой пайплайн с пояснениями.
5. Проектирование схемы базы данных
Для чего: Быстро набросать схему для нового проекта, учитывая нормализацию и типы данных.
Промт:
Спроектируй схему базы данных для [описание проекта, например, интернет-магазина]. Определи таблицы, поля с типами данных, первичные и внешние ключи. Учитывай нормализацию до 3НФ. Выведи SQL-скрипт для PostgreSQL (или MongoDB-схему) с комментариями.
Пример использования:
Для блога с постами и комментариями AI предложит таблицы users, posts, comments с полями id, title, body, created_at и связями. Добавит индексы для внешних ключей.
6. Объяснение и документирование сложного запроса
Для чего: Понять чужой (или свой старый) запутанный SQL-код и подготовить документацию.
Промт:
Объясни следующий SQL-запрос шаг за шагом как для новичка: [вставьте запрос]. Разбей его на логические блоки, опиши назначение каждого JOIN, условия WHERE и агрегаций. Добавь комментарии к каждой строке.
Пример использования:
Запрос с тремя JOIN и CASE-условием превратится в понятное руководство, которое можно использовать в документации проекта.
7. Генератор тестовых данных
Для чего: Заполнить таблицы реалистичными данными для тестирования.
Промт:
Сгенерируй SQL-запрос для вставки [количество] тестовых записей в таблицу [таблица] с полями [поля]. Используй случайные данные: имена, email, даты в диапазоне [диапазон], числа в диапазоне [диапазон]. Убедись, что данные выглядят реалистично.
Пример использования:
Для таблицы users (id, name, email, created_at) AI сгенерирует: 'INSERT INTO users (name, email, created_at) VALUES (\'Иван Иванов\', \'ivan@example.com\', \'2026-08-01\'), ...' — 100 записей.
8. Поиск и исправление ошибок в запросах
Для чего: Быстро найти синтаксические ошибки и логические проблемы.
Промт:
Исправь ошибки в следующем SQL-запросе (или MongoDB-запросе). Укажи, что было не так, и объясни исправления: [вставьте код].
Пример использования:
Запрос с неверным синтаксисом GROUP BY AI исправит и пояснит, почему нужно перечислять все неагрегированные поля.
9. Перевод SQL в MongoDB и обратно
Для чего: Когда нужно перенести логику между реляционной и документной БД.
Промт:
Переведи следующий SQL-запрос в эквивалентный MongoDB-запрос (агрегацию): [вставьте SQL]. Объясни соответствие операторов SQL ($match, $group, $project и т.д.).
Пример использования:
SQL SELECT customer_id, SUM(amount) FROM orders WHERE status='paid' GROUP BY customer_id превратится в db.orders.aggregate([{ $match: { status: 'paid' } }, { $group: { _id: "$customer_id", total: { $sum: "$amount" } } }]).
10. Анализ производительности и советы по индексам
Для чего: Улучшить скорость запросов за счёт правильных индексов.
Промт:
На основе следующего запроса [вставьте запрос] предложи, какие индексы создать в PostgreSQL (или MongoDB). Объясни, почему они помогут, и покажи синтаксис CREATE INDEX.
Пример использования:
Для запроса с WHERE по created_at и JOIN по user_id AI предложит:
CREATE INDEX idx_orders_user_id ON orders(user_id);
CREATE INDEX idx_orders_created_at ON orders(created_at);
11. Создание отчёта в формате JSON из SQL-данных
Для чего: Подготовить данные для API или визуализации.
Промт:
Напиши SQL-запрос, который возвращает данные в формате JSON (используя json_agg или json_build_object в PostgreSQL). Запрос должен группировать [поле] и вкладывать связанные записи. Предоставь пример вывода.
Пример использования:
Запрос для получения списка категорий с товарами:
SELECT json_agg(json_build_object('category', c.name, 'products', (SELECT json_agg(p.name) FROM products p WHERE p.category_id = c.id))) AS categories
FROM categories c;
12. Обучение основам SQL для новичков
Для чего: Быстро получить объяснение базовых концепций с примерами.
Промт:
Объясни разницу между INNER JOIN и LEFT JOIN на простых примерах. Покажи, как они влияют на результат, и приведи SQL-код для каждого. Добавь визуальную схему (текстовую).
Пример использования:
AI вернёт таблицу с примерами, объяснит, что INNER JOIN возвращает только совпадающие записи, а LEFT JOIN — все записи из левой таблицы, даже если нет совпадений.
Финальные мысли
Эти промты — не магия, а инструменты. Они экономят часы рутины, но не заменяют понимания баз данных. Используйте их как шпаргалку, адаптируйте под свои задачи и всегда проверяйте результаты. Начните с одного промта, который решает вашу текущую боль, и постепенно внедряйте остальные. Уверен, вы почувствуете разницу уже в первый день.
Комментарии