Медленное заполнение .NET DataSet из Oracle 9i - PullRequest
1 голос
/ 22 декабря 2009

Это проблема, которую мой друг задал по телефону. Написанная им программа на C # 3.5 заполняет набор данных из таблицы Patient Master, в которой содержится 350 000 записей. Он использует драйвер Microsoft ADO.NET для Oracle. Метод ExecuteQuery занимает более 30 секунд, чтобы заполнить набор данных. Тем не менее, тот же запрос (выборка около 20 тыс. Записей) занимает менее 3 секунд в Toad. Он не использует транзакции в рамках программы. У него есть индекс в столбце (Имя), который используется для поиска.

Вот некоторые альтернативы, которые я предложил: -

1) Попробуйте использовать Data Reader, а затем заполните таблицу данных и передайте ее в форму, чтобы связать ее с полем со списком (что не очень хорошая идея, поскольку это может занять то же время)

2) Попробуйте драйвер ADO.NET для Oracle

3) Используйте профилировщик Ants, чтобы определить, можете ли вы определить какую-либо конкретную строку ADO.NET.

Кто-нибудь сталкивался с подобными проблемами и как можно решить эту проблему?

Спасибо, Чак.

Ответы [ 3 ]

1 голос
/ 22 декабря 2009

Жаба обычно выбирает только первые x строк (500 в моей настройке). Поэтому дважды проверьте правильность сравнения.

Тогда вам следует попытаться отделить материал БД от материала формы, если это возможно, чтобы увидеть, занимает ли БД время.

Если это так, попробуйте библиотеки Oracle, если это произойдет быстрее, мы увидели 50% улучшений между последним драйвером Oracle и стандартным драйвером Microsoft.

1 голос
/ 27 декабря 2009

Вам действительно нужно выполнить расширенную трассировку SQL, чтобы увидеть, откуда происходит медлительность. Вот статья Кэри Миллсап (из метода R и ранее Хотсоса), в которой подробно описывается это:

http://method -r.com / загрузки / doc_details / 10-для-разработчиков решений-друзей-с-оракула-БД-Cary-Millsap

0 голосов
/ 22 декабря 2009

Не зная фактического кода, который он использует для выполнения своих задач, и не зная количества строк, которые он на самом деле выбирает (я надеюсь, что он не читает все 350K из них?), Невозможно сказать что-нибудь, что поможет ему.

Пусть он внесет фрагмент кода в вопрос для ясности.

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