Bạn không thể tạo một chỉ mục trên một bảng tạm thời trong khi nó đang được sử dụng bởi phiên khác, vì vậy câu trả lời là: Không, nó không thể ảnh hưởng đến bất kỳ quá trình khác, bởi vì nó không phải là có thể.
Chỉ mục hiện tại chỉ ảnh hưởng đến phiên hiện tại của bạn, bởi vì đối với bất kỳ phiên nào khác, bảng tạm thời xuất hiện trống, vì vậy nó không thể truy cập bất kỳ giá trị chỉ mục nào.
Phần 1:
SQL> create global temporary table index_test (val number(15)) on commit preserve rows;
Table created.
SQL> insert into index_test values (1);
1 row created.
SQL> commit;
Commit complete.
SQL>
Phần 2 (trong khi phiên 1 vẫn kết nối):
SQL> create unique index idx_val on index_test(val);
create unique index idx_val on index_test(val)
*
ERROR at line 1:
ORA-14452: attempt to create, alter or drop an index on temporary table already in use
SQL>
Trở về phiên 1:
SQL> delete from index_test;
1 row deleted.
SQL> commit;
Commit complete.
SQL>
Đợt 2:
SQL> create unique index idx_val on index_test(val);
create unique index idx_val on index_test(val)
*
ERROR at line 1:
ORA-14452: attempt to create, alter or drop an index on temporary table already in use
SQL>
vẫn không thành công, trước tiên bạn phải ngắt kết nối phiên 1 hoặc bảng phải được cắt ngắn.
Phần 1:
SQL> truncate table index_test;
Table truncated.
SQL>
Bây giờ bạn có thể tạo ra các chỉ mục trong Đợt 2:
SQL> create unique index idx_val on index_test(val);
Index created.
SQL>
Chỉ số này tất nhiên sẽ được sử dụng bởi bất kỳ phiên.
Nguồn
2013-12-03 15:51:40
có các bảng tạm thời thực sự. – EvilTeach
Chỉ mục sẽ tồn tại cho tất cả các phiên (vì vậy có thể tác động đến quá trình xử lý của chúng và có thể gây ra sự cố cho chúng nếu đó là chỉ mục duy nhất và chúng mong đợi dữ liệu không phải là duy nhất hoặc thậm chí nếu nó chỉ làm chậm quá trình chèn/cập nhật). Ngoài ra, việc thêm/bớt chỉ mục sẽ đưa ra một khóa ngắn trên bảng Tương tự bạn có thể thu thập số liệu thống kê trên bảng tạm thời, nhưng chúng sẽ được giả định áp dụng cho tất cả các truy vấn trên bảng có thể hoặc không phù hợp với tình hình. –
> Gary Không, chỉ mục được lưu trữ chính xác giống như bảng - riêng trong mỗi phiên, do đó bạn không thể nhận được xung đột giữa các phiên ngay cả khi chỉ mục là duy nhất. Rõ ràng việc thêm/bớt các chỉ mục có một khóa trên bàn, nhưng bạn có thường xuyên thêm/bớt các chỉ mục không? Có, thống kê áp dụng trên toàn cầu cho các bảng tạm thời, đó là lý do tại sao đôi khi bạn cần sử dụng gợi ý CARDINALITY khi truy vấn GTT. –