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
Code (SQL)
crd: thaicreate
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)
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()),
SUBSTRING
(
MONTH
(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