การทำ index ใน MSSQL Server เพื่อปรับให้การ query เร็วขึ้น ด้วยการใช้ SQL Server Profiler และ Database Engine Tuning Advisor ซึ่งปัญหานี้อาจจะเกิดจากตอนออกแบบฐานข้อมูลแล้วไม่มีการสร้างลิ้งค์ระหว่างเทเบิลที่เกี่ยวข้องไว้ เมื่อข้อมูลมีปริมาณมากขึ้นก็จะเห็นผลได้ชัดเจนว่าดึงข้อมูลได้ช้า แต่การปรับ tuning ด้วยวิธีนี้อาจจะไปเพิ่มเวลาในการ insert ข้อมูลขึ้นมานิดนึงนะครับ
1. ก่อนอื่นต้องทำ SQL Server Profiler เพื่อเก็บข้อมูลการ qurey ของเราที่มีการใช้งานปกติไปทำการ Tuning โดยไปที่เมนู Tools –> SQL Server Profiler
เมื่อปรากฎหน้าต่างนี้ ให้ล็อคอินตามปกติ
2. จะปรากฎหน้าต่าง Trace Properies
– ให้ตั้งชื่อในช่อง Trace name
– เลือกที่ Save to file จากนั้นตั้งชื่อไฟล์ที่จะบันทึกเพื่อนำไฟล์นี้ไปใช้ในการทำ Database Engine Tuning Advisor
– ในชื่อง Set maximum file size (MB) ให้ปรับขนาดไฟล์สูงสุดที่เก็บข้อมูลเป็นซัก 100 MB
– จากนั้นคลิกที่ Run
3. ให้ทำการเปิดหน้าโปรแกรมที่ทำงานเพื่อให้มีการ qurey database
– ดูที่ SQL Server Profiler จะมีการแสดงการ query database ที่เกิดขึ้นในโปรแกรมที่กำลังทำงาน
4. คลิกที่ปุ่ม Stop เพื่อหยุดการทำงานและบันทึกลงในไฟล์ เป็นอันว่าได้ไฟล์มาเรียบร้อยแล้ว
5. หลังจากนั้นเราก็จะมาทำในส่วนของ Database Engine Tuning Advisor โดยไปที่เมนู Tools –> Database Engine Tuning Advisor
เมื่อปรากฎหน้าต่างนี้ ให้ล็อคอินตามปกติ
6. จากรูปด้านล่าง ให้ตั้งค่าตามนี้
– เลือกไฟล์ที่เราบันทึกตอนทำ SQL Server Profiler ไว้ (.trc)
– เลือกฐานข้อมูลที "Database for workload analysis :" เป็นฐานข้อมูลที่เราต้องการวิเคราะห์
– คลิกเลือกที่ "Select databases and tables to tune :" เป็นฐานข้อมูลที่เราต้องการปรับแต่ง
– คลิกที่ "Start Analysis" ด้านบน ก็จะเริ่มทำการวิเคราะห์ tuning ว่าต้องทำ index อะไรบ้าง แล้วจะได้ประสิทธิภาพมากขึ้นเท่าไหร่
7. เมื่อเสร็จแล้วก็จะมีการรายงานผลการวิเคราะห์ tuning
8. ขั้นตอนสุดท้ายคือการ Apply เพื่อสร้าง Index ขึ้นมา ก็จะเสร็จสิ้น กระบวนการ เร็วขึ้นแน่นอน
*** ไปที่เมนู Action -> Apply Recommentdations -> เลือก Apply Now -> กด OK