В чем разница между «индекс по таблице» и «индекс по таблице записей»? - PullRequest
2 голосов
/ 15 мая 2011

Я встречал оба термина, но они звучат как синонимы. Есть ли различие между ними?

Ответы [ 3 ]

6 голосов
/ 15 мая 2011

Индексная таблица - это термин Oracle, обозначающий «ассоциативный массив».Это массивы, которые содержат элементы, к которым можно обращаться (или индексировать) как целое число, так и строку.Вероятно, их так называют из-за использования ключевых слов INDEX BY при определении массива.

Сокращение от примера, приведенного в документации Oracle :

DECLARE  
  TYPE population_type IS TABLE OF NUMBER INDEX BY VARCHAR2(64);
  country_population population_type;
  howmany NUMBER;
BEGIN
  country_population('Greenland') := 100000; -- Creates new entry
  howmany := country_population('Greenland');
  ...

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

Опять же, из документации Oracle :

DECLARE
   TYPE EmpTabTyp IS TABLE OF employees%ROWTYPE
      INDEX BY PLS_INTEGER;
   emp_tab EmpTabTyp;
BEGIN
   /* Retrieve employee record. */
   SELECT * INTO emp_tab(100) FROM employees
     WHERE employee_id = 100;
END;

Здесь emp_tabтаблица index-by, индексированная целыми числами, содержащая записи сотрудников% ROWTYPE.

2 голосов
/ 15 мая 2011

Я не уверен, откуда вы взяли фразы, но TABLE OF и INDEX BY являются отдельными частями объявления типа коллекции. TABLE OF определяет тип поля (полей) коллекции, который может быть типом данных (то есть TABLE OF NUMBER) или типом записи (т.е. TABLE OF MY_TABLE%TYPE).

INDEX BY относится к методу поиска этой коллекции, почти как пара ключ-значение. Например, я мог бы использовать INDEX BY VARCHAR2(10), чтобы использовать текстовый ключ для извлечения значения из типа коллекции.

Вот иллюстрация:

DECLARE
  TYPE my_type IS TABLE OF NUMBER INDEX BY VARCHAR2(10);
  n_my_value NUMBER;
BEGIN
  my_type ('the key') := 99;
  n_my_value := my_type ('the key');
END;
/
0 голосов
/ 27 февраля 2017

Индекс по таблицам - это определяемые пользователем типы данных, которые используются для хранения нескольких элементов данных. В основном эти таблицы являются неограниченными таблицами. Индекс по таблице, состоящей из двух частей, это поле значения и поле ключа. В поле значений сервер oracle хранит фактические данные, где, как и в ключевом поле, сервер oracle хранит индексы, поэтому индекс по таблице, содержащей пары «ключ-значение», а также индексы по умолчанию являются целыми числами, и эти индексы находятся между отрицательными и положительными числами. Это индексное поле ведет себя как первичный ключ, оно не принимает повторяющиеся значения. Обычно индекс по таблицам используется для повышения производительности или приложения, поскольку эти таблицы хранятся в области памяти, поэтому эти таблицы также называют таблицами памяти. Как правило, для повышения производительности приложения в этих табличных индексах используется тип данных «двоичное целое», поэтому мы создаем его в два этапа. Сначала мы создаем тип, затем только мы создаем переменную этого типа.

Синтаксис: -

Step1: - Тип typename является таблицей индекса типа (размера) данных от binary_integer; Шаг 2: - имя переменной типа;

Для получения дополнительной информации >>>> http://www.oraappdata.com/2017/02/plsql-index-by-tables-or-plsql-tables-or-associative-arrays.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...