2012-02-13 35 views
19

Tôi đang phát triển mạnh mẽ trên Oracle. Tôi có một số bảng mà tôi đã xác định ràng buộc KEY NGOẠI TỆ. Tôi đã đọc câu hỏi định hướng SQL Server và định hướng MySQL này nhưng tôi không thể tìm thấy gì về Oracle. Vì vậy, câu hỏi luôn luôn giống nhau: để tối ưu hóa hiệu suất truy vấn, đối với những cột mà tôi tạo ra một ràng buộc KEY NGOÀI, tôi cũng phải tạo một chỉ mục thứ cấp rõ ràng không? Không. Liệu Oracle có tự động tạo ra một chỉ mục trên các cột FOREIGN KEYED để tăng hiệu suất trong các JOIN?Liệu Oracle có tự động tạo chỉ mục phụ cho các cột KEY FOREIGN không?

Tôi thường thực hiện các truy vấn trong đó mệnh đề WHERE so sánh với các cột đó.

+1

Không, không. Xem ví dụ [this] (http://stackoverflow.com/questions/4127206/do-i-need-to-create-indexes-on-foreign-keys). –

Trả lời

18

Không, Oracle không tự động tạo chỉ mục trên các cột khóa ngoài, mặc dù trong 99% trường hợp bạn có thể nên làm. Ngoài việc trợ giúp với các truy vấn, chỉ mục cũng cải thiện hiệu suất của các câu lệnh xóa trên bảng cha.

+1

Các chỉ mục này có chi phí để duy trì, và có những lúc tốt nhất là không nên tạo ra chúng. Cá nhân tôi nghi ngờ nó sẽ tạo ra chúng theo mặc định và cho phép bạn thả chúng nếu bạn muốn, nhưng Oracle là xa chỉ có DB để cư xử như nó. PostgreSQL không tự động tạo các chỉ mục cho bên tham chiếu của một mối quan hệ khóa ngoài. –

Các vấn đề liên quan