Chỉ để biết thêm thông tin: Oracle không tự động tạo chỉ mục (như cách làm đối với các ràng buộc duy nhất) bởi vì (a) không bắt buộc phải thực thi ràng buộc và (b) trong một số trường hợp bạn không cần.
Tuy nhiên, hầu hết thời gian, bạn sẽ muốn tạo một chỉ mục (trên thực tế, trong Oracle Apex có một báo cáo về "khóa ngoại không được lập chỉ mục").
Bất cứ khi nào ứng dụng cần có khả năng xóa một hàng trong bảng mẹ hoặc cập nhật giá trị PK (hiếm hơn), DML sẽ bị ảnh hưởng nếu không có chỉ mục nào tồn tại, vì nó sẽ phải khóa toàn bộ bảng con.
Một trường hợp mà tôi thường chọn không thêm chỉ mục là FK nằm trong bảng "dữ liệu tĩnh" xác định miền của cột (ví dụ: bảng mã trạng thái), nơi không bao giờ thực hiện cập nhật và xóa trên bảng mẹ. trực tiếp bằng ứng dụng. Tuy nhiên, nếu việc thêm một chỉ mục trên cột mang lại lợi ích cho các truy vấn quan trọng trong ứng dụng, thì chỉ mục vẫn sẽ là một ý tưởng hay.