Присоединяйтесь к запросу быстро в oracle sql developer, очень медленно в odp.net - PullRequest
1 голос
/ 08 декабря 2010

У меня есть SQL-запрос (объединение), который выполняется очень быстро при запуске в Oracle SQL Developer (в миллисекундах), но супер-медленный (в минутах), когда тот же запрос вызывается из приложения ac # с использованием ODP.net.Вызов OracleDataAdapter.Fill (таблица данных) просто ждет оракула.Странно то, что ранее соединение было очень быстрым и в c #.

Запрос:

select t1.col2, t1.col3 from table_1 t1 where exists (select t2.col2, t2.col3 from table_2 t2 where t1.col2 = t2.col2 and t1.col3 = t2.col3)

После некоторого исследования я понял, что единственным изменением было добавление существующегостолбец метки времени как часть первичного ключа для table_1 и table_2.

По сути, PK table_1 выглядит следующим образом (Col_TS был добавлен в PK):

Col1 (varchar2), Col2 (varchar2), Col3 (number), Col4 (number), Col_TS (timestamp)

И PK table_2 (Col_TS был добавленна ПК):

Col1 (varchar2), Col2 (varchar2), Col3 (number), Col_TS (timestamp)

Но дело в том, что я вообще не использую столбцы меток времени в своем соединении: я просто соединяю table_1 Col2 с table_2 Col2 и table_1 Col3 с table_3 Col3.Почему добавление метки времени как части PK влияет на вызов запроса из C #?

Дополнительные примечания: единственными индексами для обеих таблиц являются PK.Должен ли я добавить индекс для столбцов метки времени?Запуск Oracle 10g, .Net 4.

Любое понимание проблемы приветствуется.

Ответы [ 2 ]

1 голос
/ 08 декабря 2010

SQL Developer отображает только первые 50 записей (опция по умолчанию), и интересующий вас набор данных достаточно велик, что может быть причиной более длительного времени для .Fill (набор данных). Можете ли вы увидеть, насколько велик набор данных, запустив

select count(1) from table_2 t2 where t1.col2 = t2.col2 and t1.col3 = t2.col3)
0 голосов
/ 14 октября 2015

У меня были проблемы с медленным OracleDataAdapter.Fill() запуском, и установка большего значения на OracleCommand.FetchSize помогла решить их (по крайней мере, сократило время выполнения).

Подробнее здесь .

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