Похоже, что клиент Oracle передает все 4000 символов varchar для каждой строки.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Похоже, что клиент Oracle передает все 4000 символов varchar для каждой строки.

Сообщение Anonymous »

У меня есть база данных Oracle, к которой я подключаюсь по довольно медленному сетевому каналу. Там у меня есть простая таблица, похожая на эту:

Код: Выделить всё

create table EMPLOYEES (
employee_id INTEGER PRIMARY KEY,
first_name VARCHAR2(4000)
);
И я использую довольно скучный запрос, чтобы получить из него все строки:

Код: Выделить всё

select employee_id, first_name from EMPLOYEES
Пока все хорошо. Однако я заметил, что когда я прошу Toad экспортировать все строки, полученные в результате этого запроса, это занимает около 4 секунд. В моем приложении .NET это занимает 130 секунд. После некоторого взлома я заметил, что самое длинное значение в столбце FIRST_NAME имеет длину 50 символов, поэтому я изменил свой запрос следующим образом:

Код: Выделить всё

select employee_id, substr(first_name, 1, 50) from EMPLOYEES
Теперь он работает очень быстро как в Toad, так и в моей программе на C#/.NET. Я попробовал это, используя библиотеки поставщиков данных Microsoft и Oracle, с тем же результатом.

Что здесь происходит? Действительно ли Oracle, как я подозреваю, отправляет 4000 байт для каждой строки, оставляя клиенту возможность сократить их до нужной длины? Какой тогда смысл «var» в «varchar»? Кроме того, как Toad решает эту проблему и как я могу сделать то же самое?

Подробнее здесь: https://stackoverflow.com/questions/142 ... or-each-ro
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как правильно ограничить строку для VARCHAR2 (4000 БАЙТ) в Oracle?
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как правильно ограничить строку для VARCHAR2 (4000 БАЙТ) в Oracle?
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как правильно ограничить строку для VARCHAR2 (4000 БАЙТ) в Oracle?
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как правильно ограничить строку для VARCHAR2 (4000 БАЙТ) в Oracle?
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как правильно ограничить строку для VARCHAR2 (4000 БАЙТ) в Oracle?
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»