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