และเข้าสู่ศิลปะของการปรับแต่งประสิทธิภาพและกลยุทธ์การจัดทำดัชนี ...
ดูเหมือนว่าฉันมีเหตุผลที่จะแก้ไขคำจำกัดความดัชนีที่มีอยู่เพื่อรวมคอลัมน์ที่แนะนำ
ฉันจะใช้ใบเสนอราคาของคุณและเขียนคำนิยามดัชนีที่สาม:
create index [idx_index3]
on [table1] (col1, col2, col3)
include (col4, col5, col6....);
นั่นควรเป็นCREATE INDEX
ข้อความที่สอดคล้องกับข้อความที่ยกมาของคุณ
นั่นอาจเป็นทางออกที่ดี แต่ก็ขึ้นอยู่กับว่า ต่อไปนี้เป็นตัวอย่างเมื่อฉันบอกว่ามันขึ้นอยู่กับ
หากคุณมีปริมาณงานทั่วไปที่ส่วนใหญ่ประกอบด้วยแบบสอบถามเช่นนี้:
select col1, col2, col3
from table1
where col1 = 1
and col2 = 2
and col3 = 3;
จากนั้นidx_index1
ดัชนีของคุณก็จะมั่นคง แคบลงอย่างสมบูรณ์แบบมันเป็นดัชนีที่ตอบสนองการสืบค้นที่ไม่มีข้อมูลภายนอกอยู่ในนั้น (ไม่คำนึงถึงคำจำกัดความของดัชนีคลัสเตอร์หากมีเลย)
แต่ถ้าคุณมีปริมาณงานที่ประกอบด้วยการสืบค้นส่วนใหญ่จะเป็นดังนี้:
select co11, col2, col3, col4, col5
from table1
where col1 = 1
and col2 = 2;
ถ้าอย่างนั้นidx_index2
ก็ควรที่จะฉลาดเพราะมันเป็นสิ่งที่เรียกว่าดัชนีครอบคลุมการป้องกันความจำเป็นในการค้นหาคีย์กลับไปที่ดัชนีคลัสเตอร์ (หรือค้นหา RID กลับไปที่กอง) คำจำกัดความดัชนีที่ไม่ได้เป็นคลัสเตอร์นั้นจะรวมข้อมูลทั้งหมดที่แบบสอบถามต้องการเท่านั้น
ด้วยคำแนะนำของคุณมันจะเหมาะสำหรับแบบสอบถามดังต่อไปนี้:
select co11, col2, col3, col4, col5
from table1
where col1 = 1
and col2 = 2
and col3 = 3;
idx_index3
คำแนะนำของคุณจะเป็นดัชนีครอบคลุมที่เป็นไปตามเกณฑ์การค้นหาสำหรับข้อความค้นหาด้านบน
จุดที่ฉันพยายามจะไปอยู่ในคำถามที่แยกได้เช่นนี้เราไม่สามารถตอบได้อย่างชัดเจน ทุกอย่างขึ้นอยู่กับปริมาณงานทั่วไปและบ่อยครั้ง แน่นอนว่าคุณสามารถกำหนดดัชนีทั้งสามนี้เพื่อจัดการกับแต่ละประเภทแบบสอบถามตัวอย่างได้ แต่จะเกิดคำถามว่าการบำรุงรักษาที่จะต้องปรับปรุงดัชนีเหล่านี้ (คิดว่า: INSERTs, UPDATEs, DELETEs) นั่นคือค่าใช้จ่ายของดัชนี
คุณต้องแยกแยะและประเมินภาระงานและพิจารณาว่าข้อได้เปรียบใดจะดีที่สุด หากแบบสอบถามตัวอย่างแรกเป็นคำถามที่พบบ่อยที่สุดโดยมีการดำเนินการหลายสิบครั้งต่อวินาทีและมีข้อความค้นหาไม่บ่อยนักเช่นข้อความค้นหาตัวอย่างที่สามดังนั้นจะไม่เหมาะสมที่จะขยายหน้าใบระดับของดัชนีด้วยINCLUDE
คอลัมน์ที่ไม่ใช่ปุ่ม ทุกอย่างขึ้นอยู่กับปริมาณงานของคุณ
หากคุณเข้าใจกลยุทธ์การจัดทำดัชนีที่ชาญฉลาดและคุณเข้าใจภาระงานทั่วไปของคุณจากนั้นเมื่อใช้ทั้งสองอย่างนี้คุณจะสามารถคิดหาเส้นทางที่ดีที่สุด