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