ใช่ประโยชน์เกิดขึ้นเมื่อคุณต้องการค้นหาในส่วนของดัชนี หากคุณใส่เพรดิเคตที่ใช้ชิ้นส่วนก่อนดัชนีสามารถใช้สำหรับเคียวรีที่เกี่ยวข้องกับเพรดิเคตเหล่านั้น แต่ไม่ใช่คอลัมน์ทั้งหมดในดัชนี
นอกจากนี้หากคุณมีข้อกำหนดอื่น ๆ ก็สามารถช่วยให้วางภาคแสดงที่เลือกมากที่สุดเป็นอันดับแรกเนื่องจากจะสามารถลดการค้นหาดัชนีได้เร็วขึ้น
ในกรณีของคุณIDX_2
ไม่จำเป็นต้องซ้ำซ้อนขึ้นอยู่กับลักษณะของแบบสอบถามในตาราง อย่างไรก็ตามอาจไม่จำเป็นต้องรวมคอลัมน์ทั้งหมด ตัวอย่างเช่นถ้าคุณทำแบบสอบถามจำนวนมากโดยlocation
และdate
จากนั้นIDX_2
อาจเป็นประโยชน์ในการช่วยแก้ไขแบบสอบถามเหล่านั้นตามที่IDX_1
ไม่อยู่ในลำดับที่ถูกต้องที่จะเป็นประโยชน์สำหรับการที่ คุณอาจอย่างไรก็ตามพบว่าซ้ำซ้อนบนitem
IDX_2
จาก 9i, Oracle แนะนำตัวดำเนินการ'สแกนข้าม'ซึ่งสามารถสืบค้นคอลัมน์ดัชนีต่อท้ายได้อย่างมีประสิทธิภาพมากขึ้นซึ่งสามารถลดความต้องการดัชนีเสริมของการจัดเรียงนี้
ในกรณีที่เฉพาะเจาะจงมากขึ้นหากคุณทำการสืบค้นitem
ด้วยlocation
และdate
ไม่ต้องการคอลัมน์อื่น ๆ การสืบค้นสามารถแก้ไขได้อย่างสมบูรณ์แม้ว่าดัชนีโดยไม่ต้องอ่านอะไรจากตาราง คุณยังสามารถสร้างดัชนีครอบคลุมซึ่งมีคอลัมน์ที่ไม่ได้จัดทำดัชนีไว้ หากคอลัมน์ที่ต้องการทั้งหมดสามารถแก้ไขได้จากดัชนีครอบคลุมแบบสอบถามไม่จำเป็นต้องแตะที่ตารางหลักเลย
สุดท้ายเพื่อตอบคำถามสุดท้ายของคุณ: หากคุณมีชุดคำถามที่ใช้เป็นประจำซึ่งใช้ทรัพยากรจำนวนมากและสามารถปรับแต่งโดยใช้ดัชนีคุณควรพิจารณาอย่างรอบคอบ อย่างไรก็ตามการบำรุงรักษาดัชนีมาพร้อมกับค่าใช้จ่ายในการแทรกดังนั้นคุณจะต้องแลกเปลี่ยนประสิทธิภาพการค้นหาออกเทียบกับค่าใช้จ่ายที่ดัชนีวางบนแทรกหรือปรับปรุงการดำเนินงาน