Database Performance Tuning - Coding (SQL Tuning) Guidelines บน MySQL ตอนที่ 1

Database Performance Tuning - Coding (SQL Tuning) Guidelines บน MySQL ตอนที่ 1

การปรับแต่ง SQL เพื่อเพิ่มประสิทธิภาพการทำงานของฐานข้อมูล

Mar 29, 2014

แก้ไขล่าสุด มีผู้อ่าน 5,338  |  DATABASE MYSQL SQL

 

Database Performance Tuning คือ การปรับแต่งระบบฐานข้อมูลเพื่อให้มีประสิทธิภาพทำงานสูงที่สุด เท่าที่สามารถเป็นไปได้ การ Tuning Database นั้น

สามารถทำได้หลายส่วน ส่วนหลักๆ ประกอบด้วย 

 

1. การทำ Indexing 

2. การสร้าง Schema ที่เหมาะสมกับงาน

3. Coding หรือ SQL Tuning

4. การปรับแต่ง Server Parameters

 


ในบทความนี้ เราจะอธิบายถึง Coding หรือ SQL Tuning ซึ่งเป็นส่วนที่ Programmer หรือนักพัฒนาเกี่ยวข้องมากที่สุด

เป็นตัวอย่าง 3 กรณี

 

1. Isolating Indexed Fields

Task : จงดึงข้อมูลสั่งซื้อที่ประกอบด้วย Order ID, date of order, Customer ID ทั้งหมด 7 วันที่ผ่านมา

Objective : เขียน SQL ยังไงให้มีประสิทธิภาพและเร็วที่สุด

 

 

Solve : หลีกเลี่ยงการใช้ build in function (TODAYS, CURRENT_DATE()) กับ Indexed Fields และ หลีกเลี่ยงการใช้งาน build in function


โดยการให้ application ส่งค่าที่ต้องการในรูปแบบค่าคงที่ภายใน SQL แทน 

 

2. Correlated Subquery Conversion

Task : จงดึงข้อมูลชื่อผลิตภัณฑ์ และราคาขายที่สูงที่สุดจากรายการสั่งซื้อ

Objective : เขียน SQL ยังไงให้มีประสิทธิภาพและเร็วที่สุด

 

 

Solve : หลีกเลี่ยงจากใช้งาน Sub query ในส่วนของ Select โดยใช้วิธีการ JOIN แทน

เพราะการใช้ Sub query ในส่วน Select จะทำให้ต้องมีการประมวลผล Sub query บนทุก ๆ records 


 

3. Derived Table

Task : จงดึงข้อมูลลูกค้าและรายการสั่งซื้อล่าสุด

Objective : เขียน SQL ยังไงให้มีประสิทธิภาพและเร็วที่สุด

 

 

Solve : หลีกเลี่ยงจากใช้งาน Sub query ในส่วนของ Where โดยใช้วิธีการ JOIN แทน

เพราะการใช้ Sub query ในส่วน Where จะทำให้ต้องมีการประมวลผล Sub query บนทุก ๆ records 

 


แบ่งปัน

ชอบ +1

บันทึก

ฝากคำถาม คำแนะนำ ได้ที่

Facebook : Share.OlanLab.Com
LINE ID : @olanlab
อีเมล์ : olan@olanlab.com
Share คลังความรู้ด้านเทคโนโลยี สารสนเทศ นวัตกรรมคอมพิวเตอร์ สอนเขียนโปรแกรม Php Java Html CSS Javascript C C++ Objective-C และอื่นๆ บนระบบปฏิบัติการ Window Linux Unix CentOS IOS Android
โดยผู้เขียนที่มีความเชี่ยวชาญเฉพาะ ให้บริการพื้นที่สำหรับนักเขียนที่ต้องการแบ่งปันความรู้ พร้อมให้คำปรึกษาแก่ผู้ที่สนใจ โดยไม่เสียค่าใช้จ่าย