สำหรับข้อมูลเพิ่มเติม: Oracle ไม่สร้างดัชนีโดยอัตโนมัติ (เช่นเดียวกับข้อ จำกัด เฉพาะ) เนื่องจาก (a) ไม่จำเป็นต้องบังคับใช้ข้อ จำกัด และ (b) ในบางกรณีคุณไม่จำเป็นต้องใช้
อย่างไรก็ตามโดยส่วนใหญ่คุณจะต้องสร้างดัชนี (อันที่จริงใน Oracle Apex มีรายงาน "คีย์ต่างประเทศที่ไม่ได้จัดทำดัชนี")
เมื่อใดก็ตามที่แอปพลิเคชันจำเป็นต้องสามารถลบแถวในตารางหลักหรืออัปเดตค่า PK (ซึ่งหายากกว่า) DML จะได้รับผลกระทบหากไม่มีดัชนีเนื่องจากจะต้องล็อกตารางลูกทั้งหมด
กรณีที่ฉันมักเลือกที่จะไม่เพิ่มดัชนีคือการที่ FK อยู่ในตาราง "ข้อมูลคงที่" ซึ่งกำหนดโดเมนของคอลัมน์ (เช่นตารางรหัสสถานะ) ซึ่งจะไม่มีการอัปเดตและการลบบนตารางหลัก โดยตรงจากแอปพลิเคชัน อย่างไรก็ตามหากการเพิ่มดัชนีในคอลัมน์ให้ประโยชน์กับการสืบค้นที่สำคัญในแอปพลิเคชันดัชนีก็จะยังคงเป็นความคิดที่ดี