Огляд:
Цей проєкт демонструє покрокову оптимізацію складного SQL-запиту.
Використано набір даних 'Student Study Performance' з сайту Kaggle. Таблиця містить інформацію про бали студентів з математики, читання та письма,стать, етнічну групу, рівень освіти батьків та проходження підготовчого курсу.
Крок 1: Початковий запит:
Містить вкладені підзапити й JOIN, що ускладнювало читання й сповільнювало роботу.
Крок 2: Оптимізований варіант (з CTE):
- Замість вкладених підзапитів використано CTE:
TopParentalEducation— 2 найпоширеніші рівні освіти батьківOverallAvgMath— загальний середній бал з математикиFilteredStudents— фільтровані записи студентів
- Покращено читабельність і логічну структуру запиту
Крок 3: Індексація
Створено індекси: ON study_performance(test_preparation_course) - цей індекс допомагає швидко відфільтрувати записи студентів, які пройшли підготовчий курс
ON study_performance(parental_level_of_education) - прискорює пошук за рівнем освіти батьків, зокрема при фільтрації по двох найпоширеніших значеннях цього поля.
ON study_performance(gender, race_ethnicity) - оптимізує операцію групування за gender і race_ethnicity.
ON study_performance(math_score) - допомагає ефективніше виконувати умову у HAVING AVG(math_score) > ..., а також пришвидшує обчислення середнього балу з математики.
В результаті зменшено повні перегляди таблиці, покращено фільтрацію та швидкодію.