คือตอนนี้ผมเขียนโปรแกรมในลักษณะแบบเก็บค่าจากฐานข้อมูลก่อน ค่อยประมวลผลที่ตัวโปรแกรม
แต่ทราบว่างานบางอย่างสามารถประมวลผลที่ฐานข้อมูลได้เลย เช่น join, avg, etc...
ในฐานะที่พวกพี่ๆ มีความชำนาญในการเขียนโปรแกรม
อยากทราบว่าการกระทำการบนฐานข้อมูลแล้วได้ข้อมูลที่ประมวลแล้ว กับการดึงข้อมูลดิบมาประมวลผลเอง
แบบไหนจะมีประสิทธิภาพในแง่ของความเร็ว ขีดจำกัด หรือแง่อื่นๆ มากกว่ากันครับ
ขอบคุณครับ
on
ที่ต้องควรระวังคือเรื่อง
soginal Thu, 16/05/2013 - 14:09
ที่ต้องควรระวังคือเรื่อง database round trips นะครับ
อะไรที่มันดึงมาได้ในคราวเดียวก็ทำให้ได้ใน query เดียวจะดีกว่า ยกเว้นแต่ plan ไว้ว่าจะทำ lazy load
ส่วนจะเอาไปคำนวณที่ไหนเนี่ยก็แล้วแต่การออกแบบครับ บางโปเจ็คออกแบบเน้นทำ store procedure ก็ยัดๆลงไปใน query นั่นแหละ (แต่ query ความยาวเป็นพันบรรทัดนี่เป็นอะไรที่เจ็บปวดมากเวลาต้องมานั่งแก้)
ส่วนตัวผมก็จะดูก่อนว่าถ้าคำนวณไม่ซับซ้อนมากก็ใส่ใน query ครับ
แต่ถ้าซับซ้อนมากเขียนเป็น query ลำบากก็เขียนในโค๊ด
ตอบแบบภาพรวมคร่าวๆ ทำใน sql
lancaster Thu, 16/05/2013 - 14:29
ตอบแบบภาพรวมคร่าวๆ
ทำใน sql มักจะช้ากว่าเอามาคิดเองครับ
แต่สุดท้ายก็ต้องดูอยู่ดีว่าทำคำสั่งอะไร แล้วฝั่งโปรแกรมใช้ภาษาอะไร
ผมว่า SQL เร็วกว่านะครับ
anu Fri, 17/05/2013 - 02:42
In reply to ตอบแบบภาพรวมคร่าวๆ ทำใน sql by lancaster
ผมว่า SQL เร็วกว่านะครับ มันผ่านการ optimize มาอย่างยิ่งยวดแล้ว
ไม่นับว่าต้องดึงข้อมูลดิบมาส่งผ่านเน็ตเวิร์คแล้วต้องมาประมวลผลอีก
มันขึ้นอยู่เป็นกรณีไปนั่นแหละ
lancaster Fri, 17/05/2013 - 02:55
In reply to ผมว่า SQL เร็วกว่านะครับ by anu
มันขึ้นอยู่เป็นกรณีไปนั่นแหละครับ ต้องลองเองถึงจะรู้ว่าเคสไหนดีไม่ดี
ถ้าดึงมาประมวลผลเพื่อแสดงข้อม
wichate Thu, 16/05/2013 - 16:27
ถ้าดึงมาประมวลผลเพื่อแสดงข้อมูล และสูตรซับซ้อน ดึงมาประมวลที่ client ดีกว่าครับ
แต่ถ้าดึงมาประมวลแล้ว update กลับไปที่ Database ใช้ store procedure
ถ้าแสดงผลข้อมูลจาก procedure
massacre Fri, 17/05/2013 - 13:49
ถ้าแสดงผลข้อมูลจาก procedure ได้เลย เวลาแก้ไขมันก็ทำได้ง่ายเพราะแก้ที่ sql ได้โดยตรง
แต่ถ้าแก้ไขการแสดงผลจากโปรแกรมมันต้อง rebuild ใหม่
ลองนึกถึงตอน debug ตอน MA
kowito Mon, 20/05/2013 - 01:28
ลองนึกถึงตอน debug ตอน MA สิครับ เขียนไว้ใน SQL นี่วางกับดักตัวเองชัดๆ
อย่างที่หลายท่านแนะนำมาครับ น
gogogokrit Sat, 01/06/2013 - 21:58
อย่างที่หลายท่านแนะนำมาครับ
นอกจากนี้อาจต้องดูปัจจัยอื่นๆ เช่น tuning indexs ความถี่ของการใช้งาน ขนาดข้อมูลที่ต้องประมลวผล
ถ้าทำด้วย SQL แล้วประสิทธิภาพยังใช้ได้ (อย่าให้เกิน 0.01 วินาที) ก็ลุย SQL ตรงๆ ครับ มันมีเรื่อง caching อีกด้วย ที่จะลดการคำนวณที่ไม่จำเป็นลงได้อีก