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