query ด้วยการ join หรือ query ทีละตารางแบบไหนดีกว่ากัน
วิธีแรกเป็นการ query เพียงครั้งเดียวด้วยการ JOIN ได้ผลลัพท์ที่ต้องการจากการ query เพียงครั้งเดียว
SELECT P.`id`,P.`topic`,P.`auction_closed`,(P.`auction_closed`-1435483111) AS `timeleft`,U.`email`
FROM `bid_pramool_product` AS P
INNER JOIN `bid_pramool_event` AS E ON E.`product_id`=P.`id` AND E.`action`=2
INNER JOIN `bid_user` AS U ON U.`id`=E.`member_id`
WHERE P.`auction_closed`<1435483411 AND P.`status`<2
ผลการทดสอบการประมวลผลจำนวน 10 ครั้ง ใช้เวลาเฉลี่ยในการประมวลผล (เอาแบบดูง่ายๆนะครับ ดูจากช่อง Elapsed) 160 ms.
ครั้งแรก query เอาสินค้าที่ใกล้หมดเวลาออกมาก่อน
SELECT P.`id`,P.`topic`,P.`auction_closed`,(P.`auction_closed`-1435483050) AS `timeleft`
FROM `bid_pramool_product` AS P
WHERE P.`auction_closed`<1435483350 AND P.`status`<2
ครั้งที่สอง เอารายการสินค้าใน query แรกไปหาสมาชิกที่ร่วมประมูล
SELECT E.`product_id`,U.`email`
FROM `bid_pramool_event` AS E
INNER JOIN `bid_user` AS U ON U.`id`=E.`member_id`
WHERE E.`product_id` IN (3733,3736,3738) AND E.`action`=2
ผลลัพท์การ query รวมทั้ง 2 คำสั่ง เฉลี่ยสัก 30 ms ละกัน
ทั้งสองวิธีใช้หน่วยความจำในการประมวลผล พอๆกัน และ เมื่อรวมการประมวลผลด้วย PHP ด้วยแล้ว ก็ใช้เวลาในการประมวลผลไม่ต่างจากรายละเอียดด้านบนมากนัก