⊗ppSpOtSQ 80 of 83 menu

การเพิ่มประสิทธิภาพการใช้คำสั่ง SQL ใน PHP

การดำเนินการคำสั่ง SQL ไปยังฐานข้อมูลเป็น การดำเนินการที่ช้ามาก ดังนั้นจึงจำเป็นต้อง พยายามลดจำนวนคำสั่งที่ส่งไปยังฐานข้อมูล ให้น้อยที่สุด

ข้อผิดพลาดที่พบได้บ่อยที่สุดคือการดำเนินการ คำสั่ง SQL จำนวนมากในลูป ในขณะที่ มีคำสั่งทางเลือกซึ่งช่วยให้ สามารถทำสิ่งที่ต้องการด้วยคำสั่งเดียวได้

เรามาดูตัวอย่างกัน

สมมติว่าเรามีอาร์เรย์ที่มี id ของเร็กคอร์ด ในฐานข้อมูล และเราต้องการลบเร็กคอร์ด ที่มี id ดังกล่าว

โดยไม่คิดมาก เราสามารถเขียนโครงสร้าง ที่ "วิเศษ" แบบนี้ได้:

<?php $ids = [1, 2, 3, 4, 5]; // อาร์เรย์สำหรับการลบ foreach ($ids as $id) { mysqli_query($link, "DELETE FROM users WHERE id=$id"); } ?>

ปัญหาของโค้ดนี้คือมีการดำเนินการ คำสั่งจำนวนมากในลูป ลองนึกภาพว่า ในอาร์เรย์จะมี 100 องค์ประกอบ - จะมีการดำเนินการ คำสั่งถึง 100 ครั้งไปยังฐานข้อมูล!

กับดักพิเศษของงานที่อธิบายไว้คือ ในระหว่างการพัฒนาเว็บไซต์ ฐานข้อมูลมีขนาดเล็ก และคำสั่งต่างๆ จะทำงานได้อย่างรวดเร็วมาก อย่างไรก็ตาม เมื่อเว็บไซต์ทำงานบนโฮสติ้ง ฐานข้อมูลจะ เติบโตขึ้น คำสั่งต่างๆ จะทำงานช้าลงเรื่อยๆ และอาจถึงจุดที่เนื่องจากการดำเนินการ คำสั่งเป็นร้อยๆ ครั้งในลูป เว็บไซต์อาจโหลด นานกว่าหนึ่งนาที!

ด้วยความพยายามเพียงเล็กน้อย เราสามารถทำให้ มีการดำเนินการเพียงคำสั่งเดียวได้ ดังนี้:

<?php $ids = [1, 2, 3, 4, 5]; $str = implode(',', $ids); // จะได้สตริง '1,2,3,4,5' mysqli_query($link, "DELETE FROM users WHERE id IN ($str)"); ?>

เพิ่มประสิทธิภาพโค้ดด้านล่างนี้:

<?php $arr = [1, 2, 2, 4, 5]; $res = []; for ($i = 1; $i < count($arr); $i++) { $note = mysqli_query($link, "SELECT * FROM users WHERE id=$id"); for ($data = []; $row = mysqli_fetch_assoc($note); $data[] = $row); $res[] = $data; } var_dump($res); ?>
ไทย
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣTürkmenTürkçeЎзбекOʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ