ออกรายงานนับจำนวนคงเหลือ sql ให้ประมวลผลเร็ว
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ออกรายงานนับจำนวนคงเหลือ sql ให้ประมวลผลเร็ว
ออกรายงานนับจำนวนคงเหลือ sql ให้ประมวลผลเร็ว
Copy
ขอสอบถามคะ พอดีว่าจะทำรายงานแสดงยอดคงเหลือ แสดงตามสินค้า ข้อมูลมีเยอะกว่า 1 แสนเรคคอร์ด อยากทราบวิธีเขียนคำสั่ง sql ที่ทำให้ประมวลผลเร็วที่สุดค่ะ
SELECT a.bid, b.name_pro,
(SELECT COUNT(bb.Docno) FROM carsale_campaign aa LEFT JOIN subpro bb ON aa.DocNo = bb.DocNo WHERE aa.bid = a.bid AND bb.StatusDoc = 'Y'
AND DATE(aa.DocDate) BETWEEN '2018-01-01' AND '2018-12-31') AS campaignALL,
(SELECT COUNT(bb.Docno) FROM carsale_campaign aa LEFT JOIN subpro bb ON aa.DocNo = bb.DocNo WHERE aa.bid = a.bid AND bb.StatusDoc = 'Y' AND bb.step IN ('3','4')
AND DATE(aa.DocDate) BETWEEN '2018-01-01' AND '2018-12-31') AS campaignSuccess,
(SELECT COUNT(bb.Docno) FROM carsale_campaign aa LEFT JOIN subpro bb ON aa.DocNo = bb.DocNo WHERE aa.bid = a.bid AND bb.StatusDoc = 'Y' AND bb.step = '2'
AND DATE(aa.DocDate) BETWEEN '2018-01-01' AND '2018-12-31') AS campaignWait,
(SELECT COUNT(bb.Docno) FROM carsale_campaign aa LEFT JOIN subpro bb ON aa.DocNo = bb.DocNo WHERE aa.bid = a.bid AND bb.StatusDoc = 'Y' AND bb.step IN ('0','1')
AND DATE(aa.DocDate) BETWEEN '2018-01-01' AND '2018-12-31') AS campaignNet,
(SELECT SUM(bb.Price) FROM carsale_campaign aa LEFT JOIN subpro bb ON aa.DocNo = bb.DocNo WHERE aa.bid = a.bid AND bb.StatusDoc = 'Y'
AND DATE(aa.DocDate) BETWEEN '2018-01-01' AND '2018-12-31') AS SumALL,
(SELECT SUM(bb.Price) FROM carsale_campaign aa LEFT JOIN subpro bb ON aa.DocNo = bb.DocNo WHERE aa.bid = a.bid AND bb.StatusDoc = 'Y' AND bb.step IN ('3','4')
AND DATE(aa.DocDate) BETWEEN '2018-01-01' AND '2018-12-31') AS SumSuccess,
(SELECT SUM(bb.Price) FROM carsale_campaign aa LEFT JOIN subpro bb ON aa.DocNo = bb.DocNo WHERE aa.bid = a.bid AND bb.StatusDoc = 'Y' AND bb.step = '2'
AND DATE(aa.DocDate) BETWEEN '2018-01-01' AND '2018-12-31') AS SumWait,
(SELECT SUM(bb.Price) FROM carsale_campaign aa LEFT JOIN subpro bb ON aa.DocNo = bb.DocNo WHERE aa.bid = a.bid AND bb.StatusDoc = 'Y' AND bb.step IN ('0','1')
AND DATE(aa.DocDate) BETWEEN '2018-01-01' AND '2018-12-31') AS SumNet
FROM carsale_campaign a
LEFT JOIN province b ON a.bid = b.code_pro
WHERE 1=1 AND a.bid IN ('10','11','12','13','14','15','16','20','21','22','23','30','31','32','33','40','41','42','50','51','60','61','70','71','72','73','74','75','76','80') AND DATE(a.DocDate) BETWEEN '2018-01-01' AND '2018-12-31' GROUP BY a.bid
อันนี้เป็นโค้ดที่ใช้อยู่คะ พอรันบน Server มันช้ามากจนระบบ error เลยคะ
อันนี้เป็นโค้ดที่ใช้อยู่คะ พอรันบน Server มันช้ามากจนระบบ error เลยคะ
Anyarut
25-05-2019
11:45:07
คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา
โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ