Сколько вычислений должно быть сделано MySQL? - PullRequest
3 голосов
/ 14 мая 2009

Я пишу приложение и использую MySQL, чтобы вернуть разницу между двумя датами в MySQL, если MySQL сделает это, или я должен позволить PHP обработать это?

Мне также просто нужна сумма всех результатов, которые я получаю, если я верну их и добавлю их на стороне php или есть способ добавить все результаты вместе на стороне MySQL Server?

Ответы [ 4 ]

4 голосов
/ 14 мая 2009

Это в некоторой степени зависит от приложения, но в целом я бы перенес его на PHP, потому что обычно вы создаете веб-сайт для нескольких одновременных обращений; зачем ставить расчет в базу данных и потенциально иметь бутылочное горлышко?

1 голос
/ 14 мая 2009

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

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

0 голосов
/ 14 мая 2009

Если это тысячи разных чисел, я бы попробовал сделать это на стороне базы данных. То, что сказал Чарли, довольно обычное. Я часто делаю вычисления в базе данных и добавляю их в качестве дополнительного столбца на тот случай, если мне нужно выполнить сортировку на стороне сервера, но это, очевидно, не ваш случай.

0 голосов
/ 14 мая 2009

Нет хорошего ответа на это. Я лично делаю как можно больше в SQL, но в основном потому, что могу, а не потому, что должен.

И да, вы можете попросить MySQL рассчитать сумму:

SELECT id, SUM(price) FROM items GROUP BY id WITH ROLLUP

Последний результат с идентификатором, равным NULL, будет содержать сумму для всех строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...