SQL-запросы как ракета: 15 промтов для отладки, оптимизации и проектирования баз данных

Вы когда-нибудь ждали ответ от базы данных дольше, чем заваривается кофе? Или получали ошибку, смысл которой теряется за стенами технического жаргона? Если да — вы не одиноки. Оптимизация SQL-запросов и проектирование схем — это искусство, которое требует не только знаний, но и опыта. Но что, если у вас есть наставник, который знает тысячи тонкостей и никогда не устаёт? В 2026 году ИИ стал таким наставником. Я собрал 15 промтов, которые помогут вам ускорить запросы, спроектировать эффективные схемы и автоматизировать рутину. Они подойдут как новичкам, так и опытным разработчикам, работающим с PostgreSQL, MySQL или любой другой реляционной СУБД.

Как использовать эти промты

Перед тем как нырнуть в подборку, пара советов: промты — это не магия, а инструмент. Чем точнее вы опишете контекст, тем полезнее будет ответ. Всегда указывайте версию СУБД, структуру таблиц (хотя бы ключевые поля) и пример данных. И помните: ИИ может ошибаться, поэтому критически проверяйте его рекомендации. Но в 90% случаев он даст направление, которое сэкономит вам часы.

Базовые промты: для ежедневных задач

1. Анализ плана выполнения запроса

Задача: Понять, почему запрос выполняется медленно, и получить конкретные рекомендации по оптимизации.

Промт:

Я работаю с PostgreSQL 15. Вот мой запрос:
SELECT u.id, u.name, COUNT(o.id) AS orders_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.created_at > '2025-01-01'
GROUP BY u.id, u.name
ORDER BY orders_count DESC;

Вот вывод EXPLAIN ANALYZE:
[вставьте вывод]

Объясни, где узкие места, и предложи конкретные шаги для оптимизации (индексы, изменение запроса и т.д.).

Пример результата:
ИИ проанализирует план, укажет на Seq Scan по таблице orders, предложит создать индекс на o.user_id и u.created_at, возможно, переписать запрос с использованием оконных функций для избежания группировки. Пример ответа: «У вас полное сканирование orders, что при 10M строк — катастрофа. Создайте индекс: CREATE INDEX idx_orders_user_id ON orders(user_id); Также рассмотрите частичный индекс на users для created_at».

2. Поиск отсутствующих индексов

Задача: Автоматически определить, какие индексы стоит добавить для ускорения запросов.

Промт:

Вот мой запрос:
SELECT * FROM products WHERE category_id = 5 AND price BETWEEN 100 AND 200;
И таблица products (id, name, category_id, price, created_at).
Какие индексы вы порекомендуете? Учтите, что запросов много, и индекс должен быть оптимальным.

Пример результата:
ИИ предложит композитный индекс: CREATE INDEX idx_products_category_price ON products(category_id, price); Объяснит, почему порядок полей важен, и как индекс ускорит фильтрацию.

3. Упрощение сложного JOIN

Задача: Переписать запутанный запрос с множественными JOIN, чтобы он стал читаемее и быстрее.

Промт:

У меня есть запрос с 5 JOIN, который работает, но я не уверен в его эффективности. Вот он:
SELECT ...
FROM a
JOIN b ON ...
JOIN c ON ...
JOIN d ON ...
JOIN e ON ...
WHERE ...
Объясни, как его упростить, возможно, с использованием подзапросов или CTE.

Пример результата:
ИИ предложит разбить запрос на CTE, убрать лишние JOIN, использовать EXISTS вместо IN, или наоборот. Даст объяснение, почему это улучшит производительность.

4. Генерация случайных данных для тестов

Задача: Создать набор тестовых данных для проверки запросов без реальных данных.

Промт:

Сгенерируй SQL-скрипт для PostgreSQL, который создаст 1000 записей в таблице employees (id, name, email, salary, department_id). Имена должны быть разными, email — уникальными, salary — от 30000 до 150000, department_id — от 1 до 10.

Пример результата:
ИИ выдаст скрипт с generate_series и random(), например, с использованием CTE. Пример: INSERT INTO employees (name, email, salary, department_id) SELECT 'Employee'

|| gs, 'emp' || gs || '@test.com', 30000 + (random() * 120000)::int, 1 + (random() * 10)::int FROM generate_series(1, 1000) AS gs;

5. Объяснение ошибок простым языком

Задача: Расшифровать cryptic ошибку SQL и понять, как её исправить.

Промт:

Я получаю ошибку "ERROR: duplicate key value violates unique constraint \"users_pkey\"" в PostgreSQL. Что это значит и как исправить?

Пример результата:
ИИ объяснит, что это нарушение первичного ключа, предложит проверить последовательности (sequence), использовать ON CONFLICT, или изменить логику вставки.

Продвинутые промты: для оптимизации и анализа

6. Настройка параметров PostgreSQL

Задача: Получить рекомендации по конфигурации сервера для конкретного рабочей нагрузки.

Промт:

У меня PostgreSQL 16 на сервере с 16 ГБ RAM, SSD, 8 ядер CPU. Нагрузка — смесь OLTP и OLAP. Какие параметры в postgresql.conf вы посоветуете изменить (shared_buffers, work_mem, effective_cache_size и т.д.)? Приведи конкретные значения и объясни, почему.

Пример результата:
ИИ даст начальные значения: shared_buffers = 4GB, work_mem = 64MB, effective_cache_size = 12GB, и объяснит, как их калибровать. Сошлётся на официальную документацию.

7. Оптимизация запросов с подзапросами

Задача: Переписать запрос с коррелированными подзапросами на более эффективный вариант.

Промт:

Вот запрос:
SELECT u.name, (SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id AND o.status = 'completed') AS completed_orders
FROM users u
WHERE u.active = true;
Как его оптимизировать для больших таблиц?

Пример результата:
ИИ предложит использовать LEFT JOIN с группировкой или оконные функции, объяснит разницу в производительности.

8. Проектирование схемы для интернет-магазина

Задача: Спроектировать нормализованную схему БД для интернет-магазина с учётом требований.

Промт:

Спроектируй схему БД для интернет-магазина. Нужны таблицы: пользователи, товары, категории, заказы, детали заказа. Учти, что товары могут иметь несколько категорий, заказ содержит несколько товаров. Предложи поля, типы данных, ограничения и индексы.

Пример результата:
ИИ выдаст DDL-скрипты с внешними ключами, индексами, объяснит нормализацию и денормализацию для производительности.

9. Поиск и устранение блокировок

Задача: Диагностировать блокировки в PostgreSQL и предложить решения.

Промт:

В моей базе PostgreSQL периодически возникают блокировки. Приведи запросы для поиска блокировок (pg_locks) и объясни, как их интерпретировать. Также дай советы по их предотвращению.

Пример результата:
ИИ даст SQL-запросы для мониторинга, объяснит типы блокировок (RowExclusive, ShareLock и т.д.), предложит настройку lock_timeout или рефакторинг транзакций.

10. Оптимизация запросов с полнотекстовым поиском

Задача: Улучшить производительность полнотекстового поиска в PostgreSQL.

Промт:

У меня есть таблица articles с полем body (TEXT). Я использую to_tsvector для поиска. Как оптимизировать запросы, чтобы они были быстрее? Нужны ли индексы GIN?

Пример результата:
ИИ посоветует создать GIN-индекс: CREATE INDEX idx_articles_tsv ON articles USING GIN(to_tsvector('russian', body)); Объяснит, как настроить конфигурацию поиска, и предостережёт от частых обновлений.

Экспертные промты: для глубокой аналитики

11. Анализ и оптимизация хранимых процедур

Задача: Найти узкие места в хранимых процедурах и предложить улучшения.

Промт:

У меня есть хранимая процедура на PL/pgSQL, которая обрабатывает заказы. Она работает медленно при большом количестве данных. Вот код:
[вставьте код]
Проанализируй её и предложи оптимизации: возможно, использование временных таблиц, bulk operations или переписывание на SQL.

Пример результата:
ИИ укажет на циклы, которые можно заменить на set-based операции, предложит использовать CTE, и объяснит, как избежать row-by-row обработки.

12. Партиционирование больших таблиц

Задача: Получить советы по партиционированию для ускорения запросов на больших данных.

Промт:

Моя таблица events содержит 500 миллионов строк. Я планирую добавить партиционирование по дате. Опиши, как это сделать в PostgreSQL 16, какие типы партиционирования существуют, и как это повлияет на запросы.

Пример результата:
ИИ объяснит RANGE-партиционирование, даст DDL, и расскажет о преимуществах (ускорение удаления старых данных, улучшение производительности запросов с фильтром по дате).

13. Оптимизация работы с JSONB

Задача: Эффективно использовать JSONB для гибких данных и ускорить запросы.

Промт:

В PostgreSQL я храню данные в JSONB-поле. Как индексировать и запрашивать такие данные, чтобы не терять производительность? Приведи примеры использования GIN-индексов и операторов @>, ?, |

Пример результата:
ИИ даст примеры: CREATE INDEX ON table USING GIN (data jsonb_path_ops); Покажет, как использовать jsonb_path_query, и объяснит, когда лучше нормализовать данные.

14. Сравнение стратегий индексирования

Задача: Выбрать между B-tree, Hash, GIN, GiST для конкретного сценария.

Промт:

У меня есть таблица с полем tags (тип TEXT[]), и я часто ищу строки, содержащие определённый тег. Какой тип индекса лучше: GIN, GiST или обычный B-tree? Объясни, как работают эти индексы и приведи примеры.

Пример результата:
ИИ сравнит типы, порекомендует GIN для массивов, объяснит, как создать индекс на выражении, и предупредит о возможных компромиссах.

15. Автоматическая генерация отчётов по производительности

Задача: Создать промт, который генерирует отчёт по медленным запросам из pg_stat_statements.

Промт:

Используя pg_stat_statements, напиши SQL-запрос, который выдаст топ-10 самых медленных запросов за последний день. Включи среднее время выполнения, количество вызовов и долю от общего времени. Также дай рекомендации по их оптимизации.

Пример результата:
ИИ выдаст запрос с фильтром по времени, сортировкой по mean_exec_time, и затем проанализирует результаты. Пример ответа: «Вот запрос... Рекомендую добавить индекс на orders.user_id».

Как извлечь максимум из этих промтов

Главное — не просто копировать промты, а адаптировать их под ваш контекст. Добавляйте реальные планы выполнения, структуры таблиц. ИИ — это усилитель вашего интеллекта: он не заменит понимания основ, но поможет быстрее находить решения. Начните с базовых промтов, освойте их, а затем переходите к продвинутым. Уже через неделю вы заметите, как сократилось время на отладку.

Заключение

Я надеюсь, эта подборка станет вашим надёжным помощником в мире SQL. Помните, что оптимизация — это итеративный процесс: измеряйте, применяйте, снова измеряйте. И пусть ИИ будет вашим верным спутником в этом путешествии. Если у вас есть свои любимые промты — поделитесь в комментариях, будем учиться друг у друга.

Использование ИИ в работе с базами данных — это не замена экспертизе, а её расширение. Как говорится, «знание — сила», а «ИИ — рычаг» для этой силы.

← Все статьи

Комментарии

Читайте также

Как превратить ChatGPT в личного репетитора английского: 18 промтов, которые реально работают

26 августа 2026

Мультимодальный ИИ в деле: 15 промтов, которые превращают текст, картинки и видео в рабочие проекты

26 августа 2026

Легаси-код и ИИ: 10 промтов, которые превращают «болото» в чистую архитектуру

26 августа 2026

SQL-запросы и PostgreSQL: как ИИ превращает рутину в магию — 15 промтов для разработчика и аналитика

26 августа 2026

15 промтов для Excel и Google Sheets, которые превратят ваш хаос в чистую аналитику

26 августа 2026

От прототипа до продакшена за вечер: как собрать лендинг на промтах и не сойти с ума

25 августа 2026

SQL и NoSQL под контролем: 10 промтов, которые заменят DBA, если вы разработчик

25 августа 2026

PostgreSQL под капотом: как превратить LLM в персонального DBA и не спалить прод

25 августа 2026

15 промтов для SQL: как выжать максимум из PostgreSQL, MySQL и MongoDB в 2026 году

25 августа 2026