Bandingkan kinerja antara loop (foreach) dan database kueri mysql dengan 1000 baris di PHP?

Saya ingin membandingkan kinerja antara loop(foreach) dan data pilihan dengan kondisi yang sama di lebih dari 1000 baris atau lebih besar.
Contoh

Solusi 1

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

...memproses sesuatu database...
lalu mengembalikan $results sekitar lebih dari 100 atau 1000 baris yang saya inginkan.

Solusi 2

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

...memproses sesuatu database...
lalu $results dan saya menggunakan foreach untuk memfilter hasil seperti ini

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

dan kemudian saya mendapatkan hasil yang saya inginkan

Jadi, solusi apa yang bisa membuat kinerja lebih baik? :)


person Mai Minh    schedule 13.05.2017    source sumber
comment
Secara umum, biarkan MySQL yang melakukan semua kerja kerasnya. Mungkin hal yang paling memakan waktu adalah mengirimkan hasilnya ke seluruh jaringan. Jadi, semakin sedikit data yang harus Anda pindahkan, semakin baik   -  person RiggsFolly    schedule 13.05.2017
comment
Ya. Terima kasih kawan. pertama kali, saya pikir solusi 2 lebih baik :)   -  person Mai Minh    schedule 13.05.2017
comment
Mengapa bertanya kepada kami? Mengapa tidak menghisapnya dan melihatnya?   -  person Strawberry    schedule 13.05.2017
comment
Jika saya tahu, saya tidak akan ditanya di sini, @Strawberry, saya baru saja belajar php selama 1,5 tahun tanpa dukungan. :)   -  person Mai Minh    schedule 14.05.2017


Jawaban (1)


Umumnya, solusi pertama akan lebih cepat hanya karena mengurangi jumlah baris yang akan ditransfer dari DB ke PHP. Apalagi kalau ada indeks umur dan alamatnya mungkin lebih cepat (tapi tergantung sumber data).

Keuntungan lain menggunakan MySQL adalah menyimpan data dalam cache, sehingga ada kemungkinan seseorang baru saja menjalankan query yang sama dan MySQL dapat mengembalikan data persisnya -- tentunya hal ini akan meningkatkan performa.

person E.K.    schedule 13.05.2017
comment
Ya. Terima kasih kawan. :) - person Mai Minh; 13.05.2017