У меня есть 2 таблицы:наиболее эффективный SQL-запрос
T1 {
id: string;
school: string
}
и
T2 {
school_id: string;
student_id: string;
tuition_fee: double
}
В 2 таблицы связаны по T1.id и T2.school_id. T1 содержит информацию о каждой школе. Это относительно мало. T2 содержит информацию о стоимости обучения для каждого учащегося. Это может быть огромным (миллионы записей).
Edit:
Теперь я хочу, чтобы выяснить, какие 3 школы собирают большинство платы за обучение от своих студентов. Предположим, что невозможно, чтобы 2 школы взимали одинаковое количество всех сборов за обучение со всех своих учеников. И мое решение таково:
- Групповые записи в T2 от school_id;
- Рассчитать сумму tuition_fee в каждой группе;
- Сортировка групп по сумме в порядке убывания;
- Получить верхние 3.
Мои вопросы:
- Любой лучший способ сделать это?
- Что является самым эффективным SQL для этого?
- Любые другие соображения, которые необходимо учитывать для повышения скорости? например с помощью индексации, вид и т.д.
Ваш метод в порядке. Все это должно выполняться в одном запросе. –
@ GordonLinoff, моя интуиция подсказывает мне, что сортировка на шаге 3 может не понадобиться ... – james
Уверены, что у вас действительно есть вопрос? Там могут быть связи за плату за обучение. Даже более трех школ для высшего обучения. Что ты тогда должен вернуть? – philipxy