Сравните производительность между циклом (foreach) и базой данных запросов mysql с 1000 строками в PHP?

Я хочу сравнить производительность между циклом (foreach) и выбрать данные с одинаковым условием в более чем 1000 строк или больше.
Пример

Решение 1

$query1 = "select * from table 
            where table.name LIKE 'like-name' 
            and table.age = 1 
            and table.address = 'USA' ";

...обработать что-то из базы данных...
затем вернуть $results о более чем 100 или 1000 строк, которые мне нужны.

Решение 2

$query2 = "select * from table where table.name LIKE 'like-name' ";

...обработать что-то из базы данных...
затем $results, и я использую foreach для фильтрации результатов, подобных этому

$results2 = [];
foreach ($results as $result) {
  if($result['age'] == 1 && $result['address'] == 'USA') {
    $results2 = $result;
  }
}
return $results2;

и тогда я получаю результат, который я хочу

Итак, какое решение лучше производительности? :)


person Mai Minh    schedule 13.05.2017    source источник
comment
В общем, пусть MySQL делает всю тяжелую работу. Вероятно, больше всего времени займет отправка результатов обратно по сети. Таким образом, чем меньше данных вам нужно перемещать, тем лучше.   -  person RiggsFolly    schedule 13.05.2017
comment
да. Спасибо братан. первый раз, я думаю, что решение 2 лучше :)   -  person Mai Minh    schedule 13.05.2017
comment
Зачем спрашивать нас? Почему бы не пососать и не посмотреть?   -  person Strawberry    schedule 13.05.2017
comment
Если бы я знал, меня бы здесь не спрашивали, @Strawberry, я недавно изучал php 1,5 года без поддержки. :)   -  person Mai Minh    schedule 14.05.2017


Ответы (1)


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

Еще одним преимуществом использования MySQL является кэширование данных, поэтому существует вероятность, что кто-то только что выполнил тот же запрос, и MySQL может вернуть точные данные — очевидно, это повысит производительность.

person E.K.    schedule 13.05.2017
comment
Да. Спасибо, бро. :) - person Mai Minh; 13.05.2017