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

Oracle 11G - Hiệu quả hoạt động của lập chỉ mục lúc chèn

Đúng là việc sửa đổi bảng sẽ nhanh hơn nếu bạn không phải sửa đổi một hoặc nhiều chỉ mục và có thể thực hiện kiểm tra ràng buộc nữa, nhưng nó cũng phần lớn không liên quan nếu sau đó bạn phải thêm các chỉ mục đó. Bạn phải xem xét sự thay đổi hoàn toàn đối với hệ thống mà bạn muốn thực hiện, không chỉ một phần của nó.

Rõ ràng là nếu bạn đang thêm một hàng vào một bảng đã chứa hàng triệu hàng thì sẽ thật ngu ngốc nếu bạn bỏ đi và xây dựng lại các chỉ mục.

Tuy nhiên, ngay cả khi bạn có một bảng hoàn toàn trống mà bạn định thêm vài triệu hàng thì việc trì hoãn lập chỉ mục vẫn có thể chậm hơn cho đến sau đó.

Lý do là việc chèn như vậy được thực hiện tốt nhất với cơ chế đường dẫn trực tiếp và khi bạn sử dụng chèn đường dẫn trực tiếp vào bảng có chỉ mục trên đó, các phân đoạn tạm thời được tạo chứa dữ liệu cần thiết để tạo chỉ mục (dữ liệu cộng với rowid ). Nếu các phân đoạn tạm thời đó nhỏ hơn nhiều so với bảng bạn vừa tải thì chúng cũng sẽ nhanh hơn để quét và tạo chỉ mục từ đó.

giải pháp thay thế, nếu bạn có năm chỉ mục trên bảng, là phải thực hiện năm lần quét toàn bộ bảng sau khi bạn đã tải nó để tạo chỉ mục.

Rõ ràng là có rất nhiều vùng xám liên quan ở đây, nhưng được thực hiện tốt cho:

  1. Quyền đặt câu hỏi và các quy tắc chung và
  2. Chạy các bài kiểm tra thực tế để xác định sự thật trong trường hợp của riêng bạn.

Chỉnh sửa:

Cân nhắc thêm - bạn chạy một bản sao lưu trong khi các chỉ mục bị loại bỏ. Bây giờ, sau khi khôi phục khẩn cấp, bạn phải có một tập lệnh xác minh rằng tất cả các chỉ mục đã ở đúng vị trí, khi đó bạn phải thở phào nhẹ nhõm để khôi phục hệ thống.

Ngoài ra, nếu bạn hoàn toàn quyết tâm không duy trì các chỉ mục trong quá trình tải hàng loạt, đừng bỏ các chỉ mục - thay vào đó hãy vô hiệu hóa chúng. Điều này bảo tồn siêu dữ liệu cho sự tồn tại và định nghĩa của chỉ mục, đồng thời cho phép quá trình xây dựng lại đơn giản hơn. Chỉ cần lưu ý rằng bạn không vô tình kích hoạt lại các chỉ mục bằng cách cắt bớt bảng, vì điều này sẽ hiển thị các chỉ mục đã bị vô hiệu hóa được bật lại.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gọi thủ tục được lưu trữ từ sqlplus

  2. Sự khác biệt giữa ký hiệu cộng (+) của Oracle và ký hiệu ansi JOIN?

  3. Làm cách nào để chạy tổng từ cột thứ hai

  4. Cách xác định các lược đồ bên trong tệp Xuất dữ liệu bơm dữ liệu của Oracle

  5. kiểm tra ngày hợp lệ được khai báo trong varchar2