Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Khi nào tôi nên sử dụng Bảng tổ chức chỉ mục của Oracle? Hoặc, khi nào tôi không nên?

Về cơ bản một bảng được tổ chức theo chỉ mục là một chỉ mục không có bảng. Có một đối tượng bảng mà chúng ta có thể tìm thấy trong USER_TABLES nhưng nó chỉ là một tham chiếu đến chỉ mục cơ bản. Cấu trúc chỉ mục phù hợp với hình chiếu của bảng. Vì vậy, nếu bạn có một bảng có các cột bao gồm khóa chính và nhiều nhất là một cột khác thì bạn có thể có một ứng cử viên cho INDEX ORGANIZED.

Trường hợp sử dụng chính cho bảng được tổ chức theo chỉ mục là một bảng hầu như luôn được truy cập bằng khóa chính của nó và chúng tôi luôn muốn truy xuất tất cả các cột của nó. Trong thực tế, các bảng được tổ chức theo chỉ mục rất có thể là dữ liệu tham chiếu, các công việc tra cứu mã. Các bảng ứng dụng hầu như luôn được sắp xếp theo nhóm.

Cú pháp cho phép IOT có nhiều hơn một cột không phải khóa. Đôi khi điều này là chính xác. Nhưng nó cũng là một dấu hiệu cho thấy có lẽ chúng ta cần xem xét lại các quyết định thiết kế của mình. Chắc chắn nếu chúng ta thấy mình cần phải có chỉ mục bổ sung trên các cột không phải khóa chính thì chúng ta có thể tốt hơn với một bảng heap thông thường. Vì vậy, vì hầu hết các bảng có thể cần chỉ mục bổ sung nên hầu hết các bảng không phù hợp với IOT.

Quay lại câu trả lời này, tôi thấy một số câu trả lời khác trong chủ đề này đề xuất các bảng giao nhau là ứng cử viên phù hợp cho IOT. Điều này có vẻ hợp lý, vì các bảng giao nhau thường có một phép chiếu khớp với khóa ứng viên:STUDENTS_CLASSES có thể chỉ có một phép chiếu (STUDENT_ID, CLASS_ID).

Tôi không nghĩ đây là gang. Các bảng giao nhau thường có một khóa kỹ thuật (tức là STUDENT_CLASS_ID). Chúng cũng có thể có các cột không phải chính (các cột siêu dữ liệu như START_DATE, END_DATE là phổ biến). Ngoài ra, không có đường dẫn truy cập phổ biến - chúng tôi muốn tìm tất cả học sinh tham gia một lớp học thường xuyên như chúng tôi muốn tìm tất cả các lớp học mà học sinh đang theo học - vì vậy chúng tôi cần một chiến lược lập chỉ mục hỗ trợ tốt cả hai. Không nói rằng các bảng giao nhau không phải là một trường hợp sử dụng cho IOT. chỉ là chúng không tự động như vậy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Điều chỉnh hiệu suất câu lệnh DECODE () trong mệnh đề WHERE

  2. Xây dựng một truy vấn động trong C # (SQL Injection Attack)

  3. Xử lý yêu cầu đồng thời trong khi vẫn tiếp tục trong cơ sở dữ liệu oracle?

  4. SINH () Hàm trong Oracle

  5. Tại sao tôi nhận được ORA-00932:kiểu dữ liệu không nhất quán:dự kiến ​​- có - khi sử dụng COLLECT () trong một câu lệnh đã chuẩn bị?