สำนักวิทยบริการและเทคโนโลยีสารสนเทศ (สวส.)

Office of Academic Resources and Information Technology

รู้เรื่อง SQL [เทคนิคการประมวลผลให้เร็ว]

บทความนี้ จากโปรแกรมเมอร์สมัครเล่น จากการลองผิดลองถูกในการเขียนโปรแกรม พึ่งมาทราบและได้ความรู้ใหม่จากการอ่าน ถ้าไม่อ่านศึกษาหาความรู้เพิ่มก็คงยังไม่รู้(โถ๋เราคงดักดานไปอีกนาน) หลังจากเจอในสิ่งที่คิดว่าดีก็ได้นำมาลองปรับใช้ดู โอพระเจ้ามันยอดมาก มันทำได้ดีจริงๆ ด้วยเหตุฉนี้ก็เลยนำมาฝากกัน

  เขาบอกว่าในการใช้งานฐานข้อมูล SQL Server ให้เกิดประสิทธิภาพสูงสุดนั้น มีปัจจัยอยู่หลายอย่าง เช่น
- วิธีการออกแบบฐานข้อมูล ตาราง การกำหนด index
- การเขียนคำสั่ง Transact-SQL และ Stored procedure


2 วิธีทำ ที่พอจะปรับเบื้องต้นในการเพิ่มความเร็ว

เทคนิคและวิธีการออกแบบตาราง และสร้าง index(ยกตัวอย่างพอสังเขป)

1.ทุกตารางที่ได้รับการออกแบบควรสร้าง index แบบ unique index (คอลัมน์ที่มีข้อมูลไม่ซ้ำกัน) การค้นหาจะเร็วกว่า non-unique index
2.คอลัมน์แต่ละคอลัมน์ควรกำหนดชนิดข้อมูลให้เหมาะสม ไม่เผื่อมากเกินไป(โดยเฉพาะคอลัมน์ที่ทำเป็น index และ primary key )

 

เทคนิคและวิธีการเขียนคำสั่งเพื่อเพิ่มความเร็ว

1.เพิ่มเงื่อนไข ด้วยการใส่ Where เข้าไปเยอะๆ เพื่อให้ช่วงของข้อมูล แคบลง
2. เปลี่ยนจากการ  คำสั่ง

        $sql = mysql_query("SELECT * FROM table");
        $records = mysql_num_rows($sql);

มาเป็น
 
$sql = mysql_query("SELECT COUNT(*) FROM table");
$res = mysql_fetch_array($sql);
$records = $res[0];

คำสั่งเพิ่มขึ้น 1 บรรทัดแต่การทำงานลดลงอย่างมาก
 
การใช้ * ในคำสั่ง SELECT COUNT(*) ห้ามเอาไปใช้กับตารางประเภท InnoDB โดยเด็ดขาด
มิเช่นนั้น database server อาจน็อค 
3.การ ค้นหาจะเร็วขึ้น ถ้าเลือกบาง filed มาแสดงแทนการใช้ * 
4.ใช้ EXISTS แทน DISTINCT เมื่อใช้กับตารางที่มีความสัมพันธ์แบบ one-to-many

เป็นต้น
นะครับ ลองปรับใช้กันดูครับ
อย่างอื่นก็ เขียนตามกฎที่ถูกต้องตามมาตรฐานของ ภาษา sql