Предполагам, че говорим за GLOBAL TEMPORARY
таблици.
Мислете за временна таблица като за множество таблици, които се създават и премахват от всеки процес в движение от шаблон, съхранен в системния речник .
В Oracle
, DML
на temporary table
засяга всички процеси, докато данните, съдържащи се в таблицата, ще засегнат само един процес, който ги използва.
Данни във temporary table
се вижда само в обхвата на сесията. Той използва TEMPORARY TABLESPACE
за съхраняване както на данни, така и на възможни индекси.
DML
за temporary table
(т.е. неговото оформление, включително имена на колони и индекси) е видимо за всеки с достатъчно привилегии.
Това означава, чесъществуването на индекса ще засегне вашия процес, както и други процеси, използващи таблицата, в смисъл, че всеки процес, който променя данните във temporary table
също ще трябва да модифицира индекса.
Данни съдържащи се в таблицата (и в индекса също), напротив, ще засегнат само процеса, който ги е създал, и дори няма да бъдат видими за други процеси.
АКО искате един процес да използва индекса, а друг да не го използва, направете следното:
- Създайте две
temporary tables
със същото оформление на колони - Индекс на един от тях
- Използване на индексирана или неиндексирана таблица в зависимост от процеса