Oracle
 sql >> база данни >  >> RDS >> Oracle

Безопасно ли е да поставите индекс във временна таблица на Oracle?

Предполагам, че говорим за GLOBAL TEMPORARY таблици.

Мислете за временна таблица като за множество таблици, които се създават и премахват от всеки процес в движение от шаблон, съхранен в системния речник .

В Oracle , DML на temporary table засяга всички процеси, докато данните, съдържащи се в таблицата, ще засегнат само един процес, който ги използва.

Данни във temporary table се вижда само в обхвата на сесията. Той използва TEMPORARY TABLESPACE за съхраняване както на данни, така и на възможни индекси.

DML за temporary table (т.е. неговото оформление, включително имена на колони и индекси) е видимо за всеки с достатъчно привилегии.

Това означава, чесъществуването на индекса ще засегне вашия процес, както и други процеси, използващи таблицата, в смисъл, че всеки процес, който променя данните във temporary table също ще трябва да модифицира индекса.

Данни съдържащи се в таблицата (и в индекса също), напротив, ще засегнат само процеса, който ги е създал, и дори няма да бъдат видими за други процеси.

АКО искате един процес да използва индекса, а друг да не го използва, направете следното:

  • Създайте две temporary tables със същото оформление на колони
  • Индекс на един от тях
  • Използване на индексирана или неиндексирана таблица в зависимост от процеса


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изпращане на имейл с прикачени файлове в Oracle D2k, Oracle Forms 10g, Oracle Forms 6i

  2. Няма налични идентификационни данни в пакета за сигурност, когато се осъществява връзка с Oracle

  3. Трябва ли да разделя/подразделя таблицата си?

  4. Кога PREPARE QUERY се проваля в PRO C?

  5. Oracle SQL GROUP BY не е помощен израз за GROUP BY