รบกวนสอบถามถึงการดึงข้อมูลจากฐานข้อมูลให้เร็วที่สุด
ถ้าอยากได้ประสิทธิภาพสูงสุด มันมีอยู่ 2 ปัจจัย
1. มีทุนสูง
--- แน่นอนว่าคุณไม่ได้อยู่เพียงลำพัง
------ เพื่อนแท้ของคุณก็คืออุปกรณ์ระดับบน (Enterprise Hardware)
------ เพื่อนแท้ของคุณก็คือซอฟท์แวร์ระดับบน (Enterprise Software)
------ บุคคลากรระดับบน
--------- แน่นอนว่าต้องมีฝ่าย/แผนก DBA/ผู้บริหาร/etc.. ยั้วเยี้ยไปหมด (มากเสียจนคุณอาจรู้จักแต่ไม่สนิท )
2. ไม่มีต้นทุน(ต้นทุนต่ำ) ผมทำงานอยู่ในระนาบนี้
------ ภรรยาของผมออกไปทำธุระ(อะไรก็ไม่รู้แหล่ว) กลับบ้านตีสองตีสาม ผมยังรอได้เลย
--------- เวลารอของพวกคุณแค่ 5 - 10 วินาที สำหรับผมเอ่ยคำว่า "รับได้แบบสนิทใจ"
ทางเลือกของผมมีไม่มาก อทิเช่น
--- ปรับแต่ง SQL Query
--- แยกแสนให้เหลือพัน เช่น
Code (SQL)
IF OBJECT_ID('tempdb..#TempSEX') IS NOT NULL
DROP TABLE #TempSEX;
SELECT *
INTO #TempSEX
FROM [DB_Name].[dbo].[msrCustomer]
WHERE CustID = '1234';
SELECT * FROM #TempSEX WHERE 'หอยงาม' = 'หอยงาม';
ปล. อย่าคาดหวังกับของที่ได้มาในราคาต่ำฯ และทำกำไรให้คุณพึงพอใจ
Date :
2017-03-23 23:53:00
By :
หน้าฮี
จาก #NO 1 คำว่า "แยกแสนให้เหลือพัน "
ความหมายมันแคบลง/กว้างใหญ่ ขึ้นอยู่กับตัวของคุณจะนิยามเอาเอง
--- กระชับฐานข้อมูล
--- etc...
ตัวอย่างเพื่อทดสอบว่า "คุณมองไกล้หรือว่าคุณมองไกล "
--- ประมาณว่าสรุปยอดขายรายไตรมาส/etc...
Code (SQL)
SELECT DATEADD(mm, (Quarter - 1) * 3, beg_year_date) AS StartDate,
DATEADD(dd, -1, DATEADD(mm, Quarter * 3, beg_year_date)) AS EndDate, Quarter, 0.00 AS TotalAmount, '1234' AS SaleCode
FROM
(
SELECT '2016-01-01' beg_year_date --วันที่เริ่มต้น (ปีราชการ เริ่มต้น yyyy-10-01สิ้นสุด 30 กันยายนของปีถัดไป)
) s
CROSS APPLY
(
SELECT 1 AS Quarter
UNION ALL
SELECT 2
UNION ALL
SELECT 3
UNION ALL
SELECT 4
) q;
Date :
2017-03-24 08:35:47
By :
หน้าฮี
จาก #NO 3 "(ศาสตร์ชั้นสูง)"
--- หมายควยว่า ในยุค "สามยกโปรแกรมเมอร์" ผมเป็น "นักเลงชีวิตในห้วงเวลานั้น"
+55555
Date :
2017-03-24 10:01:41
By :
หน้าฮี
@คุณ lamaka.tor
ทุกฯสรรพสิ่งมีเกิดมีดับไป ตามธรรมชาติของมัน
--- อะไรก็ตามถ้าสถานะปัจจุบันกำลังเติบโตและยิ่งใหญ่ เช่น แสงนีออน
-------- ผมปล่อยเวลาให้มันสว่างเต็มที่ทั้งวันทั้งคืน (โตจนอิ่มเต็มที่ )
----------- เมื่อไหร่ก็ตามที่ความสว่างมันเริ่มลดน้อยถอยลง (ตามธรรมชาติของมัน มีเกิดและมีดับไป)
--------------- ผมก็จะเป็นแสงเทียนเพื่อ "เริ่มให้ความสว่าง" และผมเริ่มรู้จักคำว่า "เติบโต"
สามก๊ก และ สามยก มันก็เป็นอภิมหาอมตะ "นิยายเดียวกัน"
Date :
2017-03-24 10:18:19
By :
หน้าฮี
ผมอยู่ในบริบท "เล่าไปเรื่อยเปื่อย" และผมไม่สามารถนำพาอะไรได้
ในบริบทที่ว่า "แม้ว่าผมไม่สามารถกำเอาคำว่า"ชนะ"ได้แบบภาคภูมิใจ"
ในบริบทที่ว่า "แม้ว่าผมไม่สามารถกำเอาคำว่า"พ่ายแพ้"ได้แบบภาคภูมิใจ"
+55555
+55555
+55555
ผมไม่รุกเพื่อให้ได้คำว่าชัยชนะ และผมจะไม่ถอยและรู้จักคำว่า "พ่ายแพ้"
--- ทุกฯเวลานาที
ปล. +55555
Date :
2017-03-24 13:53:29
By :
หน้าฮี
เล่าเรื่องจริงให้ฟังนะ วันนี้วันที่ 24-มีนาคม-พ.ศ. 2560
คนที่ xxx +55555
เมียสาวข้างกายของผม : 1-10/04/2560 อยากไปประเทศญี่ปุ่น 10 วัน
ผม(ผู้เฒ่า) จัดให้ : สองแสนบาทพอไหม?
เมีย(ผู้เฒ่า) ขอร้อง: ขอเพิ่มอีกหนึ่งแสนบาทไทย
ผม(ผู้เฒ่า) : กัดฟันบัวไม่ให้ช้ำน้ำไม่ให้ขุ่น ได้ครับเมียจ๋า
เมียสาวข้างกายของผม : 1-10/04/2560 อยากไปประเทศเยอรมัน 10 วัน
ผม(ผู้เฒ่า) จัดให้ : สองแสนบาทพอไหม?
เมีย(ผู้เฒ่า) ขอร้อง: ขอเพิ่มอีกหนึ่งแสนบาทไทย
ผม(ผู้เฒ่า) : กัดฟันบัวไม่ให้ช้ำน้ำไม่ให้ขุ่น ได้ครับเมียจ๋า
ปล. ฮียังเลีย ยังทิ้งเฮียไปได้ +55555
Date :
2017-03-24 14:18:59
By :
หน้าฮี
เพลง ดีที่สุดแล้ว
ศิลปิน เดอะ ซัน
อัลบั้ม ถนนพระอาทิตย์
เหนื่อยใจเหลือเกิน ยิ่งไขว่คว้ายิ่งไกลยิ่งห่าง ยอมแล้วทุกทางไม่เดินต่อไป
หมดสิ้นแรงพลัง หมดความหวังแม้เริ่มต้นใหม่ ท้อแท้เสียใจยับเยินกลับมา
ความดีสั่งสมมานานไม่เคยเพียงพอสักอย่าง ทำดีกี่ครั้งไม่เคยพอใจ
ทำผิดเพียงครั้งก็ซ้ำให้กลายไปเป็นเรื่องใหญ่ นี่ใช่ไหมผลของการทุ่มเท
ทำดีที่สุดแล้วไม่เห็นมีใครเข้าใจ ทำดีที่สุดแล้วชีวิตยังพังทลาย
ต้องอยู่สู้ทน ผ่านคืนวันอันโหดร้าย ขอได้โปรด เห็นใจ
อยากให้เธอเข้ามา จบปัญหาชี้ทางสว่าง มองเห็นหนทางก้าวเดินต่อไป
จุดประกายพลัง จุดไฟหวังให้เริ่มต้นใหม่ คอยพลิกฟื้นหัวใจให้คืนกลับมา
เพียงเธอปลอบโยนเบาๆเข้าใจตัวเราก็พอ มีเธอความท้อก็คงมลาย
เพียงเธอห่วงใยดูแลมั่นใจในชีวิตใหม่ แต่สุดท้ายไม่มีแม้ เธอ
ทำดีที่สุดแล้วไม่เห็นมีใครเข้าใจ ทำดีที่สุดแล้วชีวิตยังพังทลาย
ต้องอยู่สู้ทน ผ่านคืนวันอันโหดร้าย ขอได้โปรดเห็นใจ
ความดีสั่งสมมานานไม่เคยเพียงพอสักอย่าง ทำดีกี่ครั้งไม่เคยพอใจ
ทำผิดเพียงครั้งก็ซ้ำให้กลายไปเป็นเรื่องใหญ่ นี่ใช่ไหมผลของการทุ่มเท
ทำดีที่สุดแล้วไม่เห็นมีใครเข้าใจ ทำดีที่สุดแล้วชีวิตยังพังทลาย
ต้องอยู่สู้ทน หมั่นทำดีกันต่อไป ซักวันหนึ่ง ฮืม...
...
...
...
Date :
2017-03-24 19:13:11
By :
หน้าฮี
ความต้องการทางธุรกิจบางครั้งมันก็อยู่เหนือ "การดึงข้อมูลจากฐานข้อมูลให้เร็วที่สุด"
------ ผมพึ่งเขียนสดสดร้อนร้อนเพื่อตอบโจทย์สิ่งเหล่านี้ (เพื่อใช้งานได้จริง 100% ตัวอย่างสมมุติของผมมันก็แค่ 0.000001 % )
------ จริงฯแล้วผมใช้ Store Procedure โดยที่ผมไม่จำเป็นต้องเกาหำให้เหนื่อย (แต่ผมมีเหตุผลบางอย่างที่ผมอยากเกาหำ )
Code (SQL)
;WITH vw2
AS
(SELECT *
FROM
(
SELECT IDCardNo AS 'IDCardNo2', Qty AS 'Qty2', Price AS 'Price2'
FROM _tb2 --งวดปัจจุบัน
WHERE IDCardNo = '1234'
EXCEPT
SELECT IDCardNo, Qty, Price
FROM _tb1 --งวดก่อนหน้านั้น 1 งวด
WHERE IDCardNo = '1234'
INTERSECT
SELECT IDCardNo, Qty, Price
FROM _tb1 --งวดก่อนหน้านั้น 1 งวด
WHERE IDCardNo = '1234'
) AS curDiffData
),
vw1
AS
(SELECT *
FROM
(
SELECT IDCardNo AS 'IDCardNo1', Qty AS 'Qty1', Price AS 'Price1'
FROM _tb1 --งวดก่อนหน้านั้น 1 งวด
WHERE IDCardNo = '1234'
EXCEPT
SELECT IDCardNo, Qty, Price
FROM _tb2 --งวดปัจจุบัน
WHERE IDCardNo = '1234'
INTERSECT
SELECT IDCardNo, Qty, Price
FROM _tb2 --งวดปัจจุบัน
WHERE IDCardNo = '1234'
) AS prevDiffData
)
SELECT vw2.*,
vw1.*,
ABS(vw2.Price2 - vw1.Price1) AS 'DiffPrice',
CASE ABS(vw2.Price2 - vw1.Price1) WHEN 0.00 THEN 0 ELSE 1 END AS 'ChgFlag1'
FROM vw2 FULL JOIN vw1 ON vw2.IDCardNo2 = vw1.IDCardNo1
ปล. ก็ลองคิดเอาเองก็แล้วกันครับ
Date :
2017-03-26 22:54:40
By :
หน้าฮี
จาก #NO 15 ผมไม่ใช่เจ้าของบ้าน
ในทุกฯเวียนวน อทิเช่น ฤดูกาลหน้าร้อน/หน้าหนาว
--- ผมคือหญ้าที่เจ้าของบ้านปลูกเอาไว้ ถ้าเขากรุณา "รดน้ำหนึ่งวันและเว้นไปอีกเจ็ดวัน"
------ ผมคงมีชีวิตรอดไปจนถึง "ฤดูฝนหน้า"
ปล. ผ่านร้อนผ่านหนาวผ่านฝน ผมก็ยังเป็นหญ้าเหมือนเดิม +55555
Date :
2017-03-26 23:14:33
By :
หน้าฮี
Date :
2017-03-27 01:36:06
By :
หน้าฮี
ขอบพระคุณครับ ท่านหน้าฮี และท่านTOR_CHEMISTRY
ขอบพระคุณสำหรับคิวรี่สวยๆครับ
สงสัยความรู้ที่ท่านได้ให้ไว้ ผมคงจะเข้าใจได้ยาก
ชนชั้นแรงงานใช้แต่กำลังในการตัดอ้อยอย่างผม
สงสัยจะต้องนั่งอ่านและทำความเข้าใจไปทีละน้อยอีกนานแสนนานถึงจะเข้าใจ
ขอบพระคุณอีกครั้งครับ
Date :
2017-03-27 17:11:04
By :
คนงานตัดอ้อย
พ่อ แม่ไม่รักหรอครับ ?? คุณสุททรภู่
Date :
2017-03-28 00:05:20
By :
Luz
ผมว่าลองทำข้อมูลเทสดูก็ได้น่ะครับ
เอาแค่ Table เดียวก็พอ
อัดข้อมูลเข้าไปสักล้านบรรทัด
แล้ว query ออกมา
ถ้า server มันทำงานได้รวดเร็วดี
ก็คงเป็นเพราะอย่างอื่นแล้วล่ะครับ
อาจจะ index ไม่ดี หรือ index มันพัง
หรืออาจจะมี index แต่เวลาใช้ ดันไปเรียกใช้ field ที่ไม่ได้ทำ index ไว้
หรืออาจจะมีการ join ไปหลาย ๆ table และบาง table ก็ไม่ได้ทำ index ไว้
มีการใช้ function ใน query หรือใช้ พวก in (อันนี้ตัวทำช้าเลย)
Date :
2017-03-28 19:35:20
By :
fonfire
ปกติแล้วแค่ Transaction ข้อมูลพวกนี้มันไม่ได้ไป JOIN อะไรซับซ้อนครับ ไม่น่าจะ Query นานมากครับ ผมไม่รู้ว่าพวก Bank เค้ามีการจัดการข้อมูลประมาณว่า 3-4 ปี Keep ข้อมูลไปไว้อีกชุดหนึ่งหรือไม่ แต่โดยปกติแล้ว Server พวกนี้ประสิทธิภาพสูงอยู่แล้วครับ
Date :
2017-03-28 19:46:45
By :
mr.win
อะไรก็ตามถ้าผมยังไม่รู้ ผมเจาะจงอ่านตำราฝรั่ง (ทั้งฯที่ผมพูดภาษาฝรั่งไม่เป็น)
--- อะไรที่ผมรู้แล้วและไม่ได้ใช้งานบ่อยฯ บางครั้งผมก็ลืมแต่จำได้ว่า "เคยเข้าใจและจะหามันได้จากที่ไหน"
------ โดยที่ผมไม่จำเป็นต้องกลับไปอ่านตำราของฝรั่งในเรื่องนั้นฯอีกครั้งหนึ่ง
มีอยู่ประโยคหนึ่งที่มีคนเคยเขียนเอาไว้
--- บนความต้องการของคนฯหนึ่งอยาก "สอนให้ หมูเห็ดเป็ดไก่" ให้ปีนต้นไม้เป็น ซึ่งมันก็สามารถทำได้
--- แต่บนความต้องการของอีกคนหนึ่งอาจจะบอกว่า "ผมยอมลงทุนจ้างกระรอกเสียยังดีกว่า"
+55555
Date :
2017-03-28 21:16:04
By :
หน้าฮี
ผมเกิดมาตัวเล็ก ผอมบาง(อย่างอื่นก็เล็กตามไปด้วย) ส่วนสูงวัดได้แค่ 142 เซนติเมตร
แต่น้ำหนักมันตรงข้ามกัน ผมหนัก 89 กิโลกรัม
...
...
...
ปล. ผมแอบกระซิบกับเพื่อนฯของภรรยาของผมว่า "ที่มันหนักเป็นเพราะ หำล้วนฯ "
Date :
2017-03-28 21:45:37
By :
หน้าฮี
โดยธรรมชาติผมเกิดมาเป็นพ่อค้า
--- ทุกฯความหวังดีบนหลายฯความห่วงใย "ผมไม่เคยลืมคำว่า กำไร/ขาดทุน"
ภาษาสากล 1 + 1 = 2 ณ. ประเทศไทย
ภาษาสากล 1 + 1 = 2 ณ. พม่า
ภาษาสากล 1 + 1 = 2 ณ. ลาว
ภาษาสากล 1 + 1 = 2 ณ. กัมพูชา
...
ภาษาคอมพิวเตอร์ก็เช่นเดียวกัน
VB 1 + 1 = 2
C# 1 + 1 = 2
JAVA 1 + 1 = 2
...
...
...
ภาษาใบ้ 1 + 1 = 2
บนโลกใบนี้ไม่มีมีภาษาคอมพิวเตอร์ใดฯที่คำนวณ 1 + 1 <> 2
ปล. ถ้ามีกรุณายกตัวอย่าง (ภาษาอะไรหว่า?) +55555
Date :
2017-03-28 22:11:05
By :
หน้าฮี
Load balance : Server 01