2017-05-19 16 views
7

Tôi hiện đang tìm hiểu các chỉ mục trong Oracle. Trong Oracle documentation, sau đây có thể được tìm thấy:Tạo chỉ mục trên các cột có khóa chính hoặc các ràng buộc khóa duy nhất đã có mặt

Mặc dù cơ sở dữ liệu tạo ra một chỉ số cho bạn trên một cột với một ràng buộc toàn vẹn, tạo ra một cách rõ ràng một chỉ mục trên một cột như vậy được khuyến khích.

Có ai ở đây có thể cho tôi biết lý do đằng sau điều này không? Nếu cơ sở dữ liệu tự động tạo chỉ mục, tại sao chúng ta nên tạo một chỉ mục khác trên các cột đó một cách rõ ràng?

+0

Câu hỏi hay. Tôi mong đợi một "không được khuyến khích" trong câu đó. Có lẽ Oracle chỉ tạo chỉ mục một lần và được khuyến nghị trong trường hợp thay đổi ràng buộc toàn vẹn. –

+1

@GordonLinoff - giữ chỉ mục khi thay đổi ràng buộc là một lý do chính đáng; tuy nhiên, với mục đích đó, Oracle có tùy chọn 'KEEP INDEX' khi vô hiệu hóa các ràng buộc. – mathguy

Trả lời

1

Ít nhất, nếu bạn tạo chỉ mục một cách rõ ràng, bạn có thể đặt tên đó là tên có ý nghĩa. Nếu bạn sau đó cần phải tham khảo các chỉ số theo tên, nó sẽ ở trong một hình thức con người có thể đọc được.

Lưu ý rằng bạn có thể tạo chỉ mục rõ ràng KHI bạn đang tạo ràng buộc, trong mệnh đề USING INDEX. Tài liệu này có một vài ví dụ: https://docs.oracle.com/cd/B28359_01/server.111/b28310/indexes003.htm#ADMIN11725

1

Ý tưởng duy nhất tôi có là các chỉ mục được tạo tự động có một số tên lạ hoặc được tạo dưới dạng SYS% hoặc kế thừa tên từ tên hạn chế. Có thể tốt hơn là giữ một số quy ước đặt tên cho các chỉ mục

+0

Có những khác biệt khác - bạn có thể kiểm soát bộ nhớ, v.v. với việc tạo chỉ mục rõ ràng. Không phải như vậy khi hệ thống làm điều đó cho bạn. – mathguy

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