PostgreSQL: эффективный способ получить среднее количество записей - PullRequest
0 голосов
/ 09 октября 2019

У меня есть таблица с именем "ITEM_REVIEW" со столбцом с именем "score".

Я знаю, что могу получить среднее значение score по:

SELECT AVG(score) FROM "ITEM_REVIEW" WHERE "item_id"=1

Является ли это правильным (и эффективным) способом вычисления среднего, даже когда записи накапливаются? или лучше выбрать данные и рассчитать среднее значение на моем сервере NodeJS?

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Если вам действительно все равно, вы должны попробовать и посмотреть. Таким образом, вы получите правильный ответ для своих версий, оборудования, конфигурации и т. Д. Обратите особое внимание на использование памяти, поскольку NodeJS может сохранить все данные в памяти, прежде чем приступит к ее усреднению.

Но в целомпопытка повторно реализовать базу данных за пределами базы данных потеряет. Не всегда, но в целом.

1 голос
/ 09 октября 2019

Я бы упростил это до

 SELECT AVG(ir.score) FROM "ITEM_REVIEW" ir 

Да, гораздо эффективнее хранить миллион строк в БД на быстром жестком диске и вычислять один float, который вы передаете по сетевому соединению,чем передача миллиона потоковых данных по сетевому соединению на общий сервер с более разнообразными обязанностями и использование некоторого медленного JavaScript для вычисления среднего

Базы данных невероятно хороши для хранения, сортировки, соединения и обработки данных;это их единственная цель / полная причина существования. Команды умных людей проводят все свое время, внедряя и улучшая производительность функций обработки данных, чтобы их базы данных оставались на вершине кучи. Оставьте ваши данные в базе данных, где это возможно, и перетащите наименьшее количество байтов, которое вы можете, по медленным сетевым соединениям (суммируйте и фильтруйте в БД всегда)

...