Sie können keinen Index für eine temporäre Tabelle erstellen, während sie von einer anderen Sitzung verwendet wird, so Antwort ist: Nein, es keinen anderen Prozess beeinflussen kann, weil es nicht möglich ist.
Ein vorhandener Index wirkt sich nur auf Ihre aktuelle Sitzung aus, da die temporäre Tabelle für jede andere Sitzung leer erscheint und daher nicht auf Indexwerte zugreifen kann.
Session 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>
Session 2 (während Sitzung 1 verbunden ist immer noch):
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>
Zurück zur Sitzung 1:
SQL> delete from index_test;
1 row deleted.
SQL> commit;
Commit complete.
SQL>
Session 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>
immer noch fehlgeschlagen, müssen Sie zuerst Sitzung 1 trennen oder Tabelle muss abgeschnitten werden.
Session 1:
SQL> truncate table index_test;
Table truncated.
SQL>
Jetzt können Sie den Index in Session erstellen 2:
SQL> create unique index idx_val on index_test(val);
Index created.
SQL>
Dieser Index wird natürlich von jeder Sitzung verwendet werden.
ja wahre temporäre Tabellen. – EvilTeach
Der Index würde für alle Sitzungen existieren (dies könnte sich auf ihre Verarbeitung auswirken und möglicherweise Probleme verursachen, wenn es sich um einen eindeutigen Index handelt und sie nicht eindeutige Daten erwarten, oder sogar wenn sie ihre Einfügungen/Aktualisierungen verlangsamen). Außerdem würde das Hinzufügen/Löschen eines Indexes eine kurze Sperre für die Tabelle auslösen. Ebenso können Sie Statistiken für eine temporäre Tabelle sammeln, aber es würde angenommen, dass sie für alle Abfragen in dieser Tabelle gelten, die für Sie geeignet sind Lage. –
> Gary Nein, der Index wird genau wie die Tabelle gespeichert - separat in jeder Sitzung, sodass Sie keine Kollisionen zwischen den Sitzungen erhalten, selbst wenn der Index eindeutig ist. Offensichtlich fügt das Hinzufügen/Löschen von Indizes eine Sperre für die Tabelle ein, aber wie oft fügen Sie Indizes hinzu/ab? Ja, Statistiken gelten global für temporäre Tabellen. Deshalb müssen Sie manchmal bei der Abfrage von GTTs den KARDINALITY-Hinweis verwenden. –