vivianpinto Ответов: 1

Прогресс-бар Vb.net для выполнения запроса и запроса прерывания.


У меня есть этот код внутри фонового рабочего. ODA-Oracle Data Adapter
ds-Dataset, OleCon - это ole-соединение.



при выполнении команды select выполнение запроса занимает 2 минуты.
cancelsynq не работает в этом месте.
как я сообщаю об этом в индикатор выполнения.? и как я отменяю синхронизацию.? Пожалуйста помочь

Что я уже пробовал:

Если Олекон.Состояние = ConnectionState.Открой Тогда Олекон.Закрывать()
Олекон.Открыть()
Dim cmd как новая OleDbCommand(qry, OleCon)
ODA. SelectCommand = cmd ' здесь занимает слишком много времени
ОПР.Заполнить(ДС, таблица)
Олекон.Close ()< / pre>
Конец, Если

1 Ответов

Рейтинг:
2

Patrice T

Цитата:
Как узнать ход выполнения.?
В принципе, вы не можете.
Отображение индикатора выполнения подразумевает, что вы знаете объем работы запроса, но обычно вы знаете его только после завершения задания.
Цитата:
при выполнении команды select выполнение запроса занимает 2 минуты.
Если это занимает 2 минуты, это означает, что запрос требует огромной работы для завершения, скорее всего, запрос не может быть оптимизирован Oracle.
Лучше всего было бы показать этот запрос, чтобы посмотреть, можно ли его изменить, чтобы он был быстрее.

[Обновление]
Будьте осторожны, обе даты не используют один и тот же формат.
Индекс на TEST_DTTM, безусловно, ускорит выполнение запроса.


vivianpinto

Привет Морф

Спасибо за ответ.

мой запрос прост, столбец location не имеет индексации.

Select * from dqc342 Where Location= 'A9T80-60008 ' and TEST_DTTM between to_date('20161121000000','yyyymmdd hh24miss') and to_date('20161121 235959','yyyymmdd hh24miss')



У меня есть вопрос. Как я останавливаю этот запрос, когда пользователь хочет прервать его.

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.