Ассоциативные массивы и таблицы UDT для обмена данными .NET / Oracle - PullRequest
2 голосов
/ 05 января 2011

У меня есть требование передавать объемные данные между приложением .NET (c #) и базой данных Oracle. Пока что представлены две альтернативы, а именно: ассоциативные массивы и таблицы пользовательских типов данных (UDT)

Пока что я создал пример для таблиц UDT, который работает довольно хорошо. Он работает значительно лучше, чем вызов вставки для каждой строки элемента массива данных, и мне хотелось бы оставить это при этом, однако я бы не стал рассматривать Associate Arrays.

Коллега сказал мне, что ассоциативные массивы - это языковая конструкция, распознаваемая только в коде PL / SQL в Oracle, но не в чистом SQL. Учитывая, что нашим разработчикам Oracle рекомендуется писать SQL на основе множеств везде, где это возможно, кажется естественным выбором выбрать таблицы UDT.

Однако мне было бы интересно узнать больше об относительных преимуществах / недостатках между этими двумя методами обмена объемными данными, чтобы я мог принять более обоснованное (и оправданное) решение в будущем.

Ваша помощь будет наиболее ценной.

Большое спасибо

1 Ответ

2 голосов
/ 05 января 2011

Со стороны Oracle, на основе этого вопроса на AskTom :

Основное различие между:

(индекс по таблицам) [= ассоциативные массивы] и (вложенные таблицы / массивы)

означает, что индекс по таблицам доступен только в PLSQL, вложенные таблицы / массивы доступны в PLSQL и SQL.

Индекс по таблицам немного более гибкий, и можно ожидать небольшого увеличения производительности, но вряд ли это будет значительное улучшение.Если вы просто используете массив в качестве контейнера для передачи данных в Oracle, разница может быть слишком незначительной, чтобы ее можно было измерить.

Если вы планируете использовать функции из SQL, вам придется использовать вложенные таблицы.

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