เกร็ดความเรื่อง SQL ที่ไม่ควรละทิ้ง

TIP การเขียน SQL เล็กๆ ที่สำคัญมากๆ เพื่อประโยชน์ในด้านความเร็ว การใช้ทรัพยากร และความถูกต้อง หลักการและตัวอย่างการเขียน SQL เพื่อประโยชน์ในด้านความเร็ว การใช้ทรัพยากร และความถูกต้องของขอมูล เคยได้เขียน Tip ลง Comunity Forum แล้วมันหายไปจากหน้าจอ เลยรวมรวมมาแสดงในบทความ





TIP การใช้เครื่องหมาย * (ดอกจัน)
วัตถุประสงค์ เพื่อลด bandwidth และความรวดเร็ว ในการส่งผ่านข้อมูล 
ทุกครั้งที่เราใช้ * นั้นหมายความว่า Server จะส่งข้อมูลทุก field ใน record ออกไป
ถ้าเราต้องการแค่บางfield ก็อย่าขี้เกียจพิมพ์ ครับ ใส่ให้ตรงกับความต้องการ อย่าทำแบบเหมารวม
เพราะมันเปลือง Bandwidth และ ความเร็วในการประมวลผลครับ
บางตารางจะมีการเก็บ รูปภาพ บทความยาวๆ แต่ที่ต้องการแค่ id กับ ชื่อ ครับ
ต้องการแค่ 60 bytes แต่ส่งมา 3 mb เหมือนขี่ช้างจับตั๊กแตนเลยนะครับ
ใส่ชื่อลงไปตามความต้องการดีกว่าครับ

TIP การ insert ตาราง ที่มี index เป็นตัวอักษรผสมตัวเลข ใน sql statement แบบ คำสั่งเดียว
จากที่อ่านหลายๆ กระทู้ เห็นมีปัญหากับการ insert record สำหรับ ตารางที่มี index เป็นตัวอักษรผสมตัวเลข
ซึ่งหลายคำตอบ มักจะใช้ การคิวรี่ และมาประมวลผลในการสร้าง ตัวแปร จาก PHP 
โดยวิธีการที่ทำผ่าน PHP หรือ Server Application อื่นๆ มันเป็นการส่ง 2 Statement
อาจทำให้มีปัญหา หากทำงานหลายเครื่องพร้อมกัน แต่วิธีข้างล่างเป็นคำสั่งให้ Database Server ทำงานครั้งเดียวครับ
เพราะเป็นการประมวลผลบน database server ไม่มีการเหลือมคิว กันแน่นอนครับ

ตัวอย่าง วิธีการเก็บลง database

TABLENAME `tdte`
id int auto_increment primary
dte varchar(9)

Code (SQL)


01.INSERT INTO `tdte`
02.SELECT
03.null,
04.CONCAT(
05.n.cym,
06.SUBSTR( COALESCE(m.IDX, 1)+100000,2)
07.)
08.FROM (
09.SELECT SUBSTRING( CONCAT(YEAR(NOW()), SUBSTRINGMONTH(NOW())+100,2) ),3) AS cym
10.AS n
11.LEFT JOIN (
12.SELECT
13.SUBSTRING(`dte`,1,4) AS ym ,
14.MAX(SUBSTRING(`dte`,5,5)) AS IDX
15.FROM `tdte` GROUP BY ym
16.) m ON m.ym=n.cym


crd: thaicreate