2013-05-09 5 views
0

У меня есть сомнение, лучше всего, с точки зрения производительности, извлечь из большой базы данных (50k + строк) на MySQL «рассчитанные» данные или выполнить исчисление «на лету»?Получение запроса против исчисления - лучшая производительность?

Исчисление - это просто деление и умножение некоторых данных, которые все же получены из БД, но много данных (минимум ~ 300 исчислений на нагрузку).

Другое примечание. Эта «страница» может быть загружена несколько раз (это не только одноразовая загрузка).

Я думаю, что вычислить значение (например, используя фоновое задание), а затем только извлечение из БД - лучшее решение с точки зрения производительности, не так ли?

Есть много различий в двух подходах?

ответ

1

Я бы сыграл в силах каждой системы.

Агрегирующая, соединительная и фильтрующая логика, очевидно, принадлежит слою данных. Это происходит быстрее, причем не только потому, что большинство БД-систем имеют 10-летнюю оптимизацию для этого, но вы минимизируете данные, сдвинутые между вашей БД и веб-сервером.

С другой стороны, большинство платформ БД, которые я использовал, имеют очень плохую функциональность для работы с отдельными значениями. Вещи любят форматирование даты и манипуляции с строками, просто всасывают SQL, вам лучше делать эту работу на PHP.

В принципе, используйте каждую систему для того, что она построила.

С точки зрения ремонтопригодности, до тех пор, пока разделение между тем, что происходит там, где ясно, разделение их на типы логики не должно вызывать много проблем и, конечно, недостаточно для того, чтобы извлечь выгоду. На мой взгляд, ясность кода и ремонтопригодность - это скорее согласованность, чем то, что он ставит всю логику в одном месте.

TO SUM UP: Я буду defenetly использовать базу данных для вашей проблемы.

+0

+1 спасибо очень хорошее объяснение! – damoiser

Смежные вопросы