advanced
Оптимизация сложных SQL-запросов
Анализ и переписывание неэффективных SQL-запросов.
📝 Contenu du Prompt
Дан следующий SQL-запрос: SELECT * FROM orders o JOIN users u ON o.user_id = u.id WHERE o.created_at > '2023-01-01' AND u.status = 'active' ORDER BY o.total DESC LIMIT 1000. Предположим, что таблица orders содержит 50 миллионов строк, а users — 5 миллионов. Текущий план выполнения показывает полное сканирование таблицы orders (Seq Scan). Ваша задача — проанализировать потенциальные проблемы производительности, предложить конкретные индексы для создания и переписать запрос, чтобы он использовал индексы наиболее эффективно. Объясните, почему ваш вариант работает быстрее, ссылаясь на принципы работы СУБД (например, стоимость ввода-вывода, выборочность).