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

Có an toàn để đặt một chỉ mục trên Bảng tạm thời của Oracle không?

Tôi cho rằng chúng ta đang nói về GLOBAL TEMPORARY bảng.

Hãy nghĩ về một bảng tạm thời gồm nhiều bảng được tạo và loại bỏ theo từng quy trình một cách nhanh chóng từ một mẫu được lưu trữ trong từ điển hệ thống .

Trong Oracle , DML của temporary table ảnh hưởng đến tất cả các quy trình, trong khi dữ liệu có trong bảng sẽ chỉ ảnh hưởng đến một quy trình sử dụng chúng.

Dữ liệu trong temporary table chỉ hiển thị bên trong phạm vi phiên. Nó sử dụng TEMPORARY TABLESPACE để lưu trữ cả dữ liệu và các chỉ mục có thể có.

DML cho một temporary table (i. e. bố cục của nó, bao gồm tên cột và chỉ mục) được hiển thị cho mọi người có đủ đặc quyền.

Điều này có nghĩa là sự tồn tại của chỉ mục sẽ ảnh hưởng đến quy trình của bạn cũng như các quy trình khác sử dụng bảng theo nghĩa là bất kỳ quy trình nào sửa đổi dữ liệu trong temporary table cũng sẽ phải sửa đổi chỉ mục.

Dữ liệu ngược lại, có trong bảng (và cả trong chỉ mục), sẽ chỉ ảnh hưởng đến quá trình đã tạo ra chúng và thậm chí sẽ không hiển thị với các quá trình khác.

NẾU bạn muốn một quy trình sử dụng chỉ mục và một quy trình khác không sử dụng nó, hãy làm như sau:

  • Tạo hai temporary table với bố cục cột giống nhau
  • Lập chỉ mục về một trong số chúng
  • Sử dụng bảng được lập chỉ mục hoặc không được lập chỉ mục tùy thuộc vào quy trình


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00923:Không tìm thấy từ khóa FROM ở nơi mong đợi - SQLDeveloper

  2. Spring JPA Hibernate:truy vấn SELECT chậm

  3. Chuyển phân số thành thập phân

  4. Lấy khóa chính từ DataSet đã chèn để xâu chuỗi vào các phụ trang khác

  5. Cách tổng hợp các giá trị riêng biệt từ nhiều danh sách bằng Oracle JSON_OBJECT &JSON_ARRAYAGG