เปรียบเทียบประสิทธิภาพระหว่าง loop (foreach) และฐานข้อมูลคิวรี mysql กับ 1,000 แถวใน PHP?

ฉันต้องการเปรียบเทียบประสิทธิภาพระหว่างลูป (foreach) และเลือกข้อมูลที่มีเงื่อนไขเดียวกันในมากกว่า 1,000 แถวหรือใหญ่กว่า
ตัวอย่าง

โซลูชันที่ 1

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

...ประมวลผลฐานข้อมูลบางอย่าง...
จากนั้นส่งคืน $results ประมาณมากกว่า 100 หรือ 1,000 แถวที่ฉันต้องการ

โซลูชันที่ 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)


ส่วนใหญ่แล้ว วิธีแก้ปัญหาแรกจะเร็วกว่าเพียงเพราะจะลดจำนวนแถวที่จะถ่ายโอนจาก DB ไปยัง PHP นอกจากนี้หากมีจะมีดัชนีอายุและที่อยู่ก็อาจจะเร็วกว่านี้ (แต่ขึ้นอยู่กับแหล่งข้อมูล)

ข้อดีอีกประการหนึ่งของการใช้ MySQL คือการแคชข้อมูล ดังนั้นจึงมีความเป็นไปได้ที่บางคนจะเรียกใช้คิวรีเดียวกันและ MySQL สามารถส่งคืนข้อมูลที่แน่นอนได้ ซึ่งแน่นอนว่าจะช่วยเพิ่มประสิทธิภาพได้

person E.K.    schedule 13.05.2017
comment
ใช่. ขอบคุณครับพี่ :) - person Mai Minh; 13.05.2017