2013-08-20 2 views
0

Я пришел к созданию временной таблицы в оракуле. Но не мог понять, как это лучше всего использовать. Может кто-то помочь мне понять, что особенности и преимущества использования временной таблицы в Oracle (create temporary table temp_table) над обычным столом (create table temp_table) )Преимущества временной таблицы в оракуле над обычным столом

+1

Таблица Temp хранится в табличном пространстве temp, используется в основном для хранения данных в течение всего сеанса или в течение ограниченного периода времени. – haki

ответ

6

От concepts guide:

Определение временной таблицы сохраняется в том же как постоянное определение таблицы , но данные существуют только на время транзакции или сеанса . Временные таблицы полезны в приложениях , где результирующий набор должен храниться временно, возможно потому, что результат построен путем запуска нескольких операций.

And:

данных во временной таблице является частным сессии, что означает, что каждый сеанс может только просматривать и изменять свои собственные данные.

Итак, один аспект заключается в том, что данные являются конфиденциальными для вашей сессии. То же самое относится и к несанкционированным данным в постоянной таблице, но с временной таблицей данные могут сохраняться и оставаться приватными через фиксацию (на основе предложения on commit о создании).

Еще один аспект заключается в том, что они используют temporary segments, что означает, что вы создаете гораздо меньше операций повтора и отмены, используя временную таблицу, чем если бы вы временно помещали одни и те же данные в постоянную таблицу, опционально обновляли ее, а затем удаляли, когда вы закончили с этим. Вы также избегаете конфликтов и блокировок, если более чем одному сеансу нужна своя версия временных данных.

+0

Спасибо Алекс за приятное объяснение. Поэтому, если есть одна временная таблица, используемая несколькими сеансами, например. несколько зарегистрированных пользователей, то как они могут себя вести? Хорошо, позвольте мне объяснить сценарий. Я использую подготовленный оператор, где в вопросе, который я использую в разделе. Итак, в разделе есть динамические значения, поэтому я не знаю, сколько? я должен положить туда. Я могу сделать его динамичным, но это не будет хороший код. Поэтому кто-то предложил мне использовать временную таблицу. Но тот же запрос может использоваться несколькими логинами, где каждый пользователь может иметь свои собственные значения для параметра. Так как же он может себя вести в этой ситуации? –

+0

@santu - вы можете это сделать. Пока вы заполняете временную таблицу и вызываете оператор из того же сеанса, вызов будет видеть только данные, которые вы только что положили. Несколько сеансов могут одновременно иметь свои личные данные без конфликтов.Я думаю, что это скорее подход SQL Server; вы также можете посмотреть на заполнение массива или таблицы PL/SQL в зависимости от того, где вы генерируете значения и вызываете это из (PL/SQL, Java, ...). Или, если значения взяты из другой таблицы, вы должны подключаться напрямую, не используя временную структуру. –

0

Ниже приведены некоторые моменты, когда и почему мы должны временную таблицу: -

1) Временные таблицы создаются для хранения данных в табличной форме, для облегчения поиска этого, при необходимости, с в этой конкретной сессии ,

2) Он также добавляет цель обеспечения хранения данных только для этой конкретной сессии.

3) Когда код длится долго и открывается много курсоров, лучше помещать данные во временную таблицу, чтобы их можно было легко извлечь в нужное время.

Смежные вопросы