Архив рубрики «Oracle PL/SQL»

SELECT_statement FOR UPDATE [of column_list] [NOWAIT]

15.03.2011

Соберем в одной куче заметке информацию о т.н. «защите данных» в таблицах, а именно их блокировке для обычных SELECT-запросов.

Официальное определение явления с download.oracle.com/docs: Вы можете переопределить стандартную блокировку с помощью оператора SELECT который включает предложение FOR UPDATE. Этот оператор производит эксклюзивную блокировку выбранных строк (также как это делает оператор UPDATE), в ожидании обновления выбранных строк в следующем операторе.

Connect by prior и иерархические запросы в Oracle

02.01.2011

Иерархические запросы в Oracle обеспечиваются фразой CONNECT BY в операторе SELECT. Эта фраза употребляется в запросе после фразы WHERE и имеет синтаксис, показанный на рис.3.22.

Рисунок 3.22 – Синтаксис фразы CONNECT BY Oracle

Oracle формирует иерархическую выборку, выполняя следующие шаги:

  1. Oracle выбирает корневую строку (строки) иерархии – ту строку, которая удовлетворяет условию в выражении START WITH.
  2. Затем выбираются дочерние строки для каждой корневой строки. Каждая дочерняя строка должна удовлетворять условию в фразе CONNECT BY по отношению к одной из корневых строк.
  3. Выбираются следующие поколения дочерних строк. Сначала выбираются потомки строк, выбранных на шаге 2, потом – их потомки и т.д.
  4. Oracle всегда выбирает потомков, вычисляя условия CONNECT BY относительно текущей родительской строки.
    Если запрос содержит фразу WHERE, исключаются все строки, которые не удовлетворяют условию в фразе WHERE. Oracle вычисляет эти условия для каждой строки, а не просто удаляет всех потомков строки, которая не удовлетворяет условию.

Oracle/PLSQL: Индексы

21.01.2010

Что такое Индекс?

Создание индекса является методом увеличения производительности работы СУБД при извлечению записей. В индексе создается запись для каждого значения, которое появляется в индексируемом столбце. По умочанию, Oracle создает индексы типа B-дерево.