Повышение производительности сайта: несколько простых запросов mySQL или один сложный запрос mySQL, которым впоследствии манипулируют в PHP? - PullRequest
1 голос
/ 11 августа 2010

Я новичок в веб-разработке и привык широко использовать различные структуры данных для достижения цели. Я также слышал, что много запросов хуже, чем несколько запросов (но сложные запросы могут быть еще медленнее).

Мне интересно, будет ли множество простых запросов работать лучше или хуже, чем один сложный запрос, который впоследствии интенсивно обрабатывается с использованием PHP.

Ответы [ 4 ]

3 голосов
/ 11 августа 2010

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

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

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

По моему опыту, задержка для связи с БД обычно настолько высока (особенно, если БД живет на другой машине), поэтому несколько вычислений в PHP следует отдавать предпочтение перед дополнительным запросом, если они могут получить тот же результат , Хотите верьте, хотите нет, PHP быстрее, чем думает большинство людей.

Тем не менее. все это требует практической оценки. Вы должны сами проверить, улучшает ли это вашу общую производительность.

1 голос
/ 11 августа 2010

Все должно быть сравнительно.Ваш вопрос слишком распространен.Нет правильного ответа.

1 голос
/ 11 августа 2010

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

0 голосов
/ 11 августа 2010

Используйте EXPLAIN , чтобы увидеть, как выполняется запрос и сколько времени он занимает.

...