ฉันต้องมีดัชนีแยกต่างหากสำหรับการสืบค้นแต่ละประเภทหรือไม่หรือจะใช้ดัชนีหลายคอลัมน์ได้หรือไม่
ฉันค่อนข้างรู้คำตอบสำหรับคำถามนี้อยู่แล้ว แต่ฉันรู้สึกเสมอว่ามีมากกว่าที่ฉันต้องรับในหัวข้อ ความเข้าใจพื้นฐานของฉันคือการพูดโดยทั่วไปดัชนีเดียวที่รวมเขตข้อมูลทั้งหมดที่คุณอาจทำการสืบค้น / เรียงลำดับในเวลาที่กำหนดไม่น่าจะมีประโยชน์ แต่ฉันได้เห็นสิ่งนี้แล้ว บางคนคิดว่า "เอาล่ะถ้าเราใส่ข้อมูลทั้งหมดลงในดัชนีฐานข้อมูลก็สามารถใช้เพื่อค้นหาสิ่งที่ต้องการ" โดยไม่ต้องเห็นแผนการดำเนินการสำหรับการสืบค้นจริงบางข้อ ลองนึกภาพโต๊ะแบบนี้: id int pk/uid name varchar(50) customerId int (foreign key) dateCreated datetime ผมอาจจะเห็นดัชนีเดียวรวมทั้งname, customerIdและdateCreatedสาขา แต่ความเข้าใจของฉันคือว่าดัชนีดังกล่าวจะไม่ถูกใช้ในแบบสอบถามเช่น: SELECT [id], [name], [customerId], [dateCreated] FROM Representatives WHERE customerId=1 ORDER BY dateCreated สอบถามเช่นมันดูเหมือนว่าผมว่าเป็นความคิดที่ดีกว่าจะเป็นดัชนีรวมทั้งcustomerIdและdateCreatedเขตที่มีcustomerIdข้อมูลเป็น 'ครั้งแรก' สิ่งนี้จะสร้างดัชนีที่จะมีการจัดระเบียบข้อมูลในลักษณะที่แบบสอบถามนี้สามารถค้นหาสิ่งที่ต้องการได้อย่างรวดเร็ว - ตามลำดับที่ต้องการ อีกสิ่งที่ฉันเห็นบ่อยครั้งเป็นอันดับแรกคือดัชนีแต่ละรายการในแต่ละฟิลด์ เพื่อให้แต่ละคนบนname, customerIdและdateCreatedสาขา ไม่เหมือนตัวอย่างแรกข้อตกลงประเภทนี้บางครั้งฉันก็ดูเหมือนจะมีประโยชน์บางส่วน แผนการดำเนินการของแบบสอบถามอาจแสดงให้เห็นว่าอย่างน้อยก็ใช้ดัชนีในcustomerIdเพื่อเลือกระเบียน แต่ไม่ได้ใช้ดัชนีกับdateCreatedเขตข้อมูลเพื่อเรียงลำดับ ฉันรู้ว่านี่เป็นคำถามที่กว้างขวางเพราะคำตอบเฉพาะสำหรับคำถามใด ๆ ในชุดของตารางใด …