advanced
Оптимизация сложных SQL-запросов с аналитическими функциями
Анализ и переписывание медленного запроса к базе данных для улучшения производительности.
📝 प्रॉम्ट सामग्री
Действуй как эксперт по оптимизации баз данных (DBA). У нас есть таблица Sales с миллионами строк и индексами на (customer_id, date). Следующий запрос работает медленно: [SELECT c.name, s.amount FROM Customers c JOIN Sales s ON c.id = s.customer_id WHERE s.date > '2023-01-01' AND s.amount = (SELECT MAX(amount) FROM Sales s2 WHERE s2.customer_id = s.customer_id)]. Проанализируй потенциальные проблемы с производительностью, объясни, почему текущий план выполнения может быть неэффективным, и предложи два альтернативных варианта переписывания запроса, используя оконные функции (Window Functions) или CTE (Common Table Expressions).