2014-12-31 3 views
1

мое приложение подключено к oracle 10g. Количество строк, которые нужно извлечь, очень велико, поэтому много времени можно извлечь из выборки. Как я могу улучшить работу с данными datawindow. во время поиска я обнаружил, что в профиле базы данных определен параметр «блок», но не уверен в нем.PowerBuilder: как я могу улучшить работу с данными datawindow

ответ

2

Сначала определите, действительно ли вам нужны все эти строки, полученные клиенту. Если этот процесс является чем-то вроде «Извлеките все, а затем сделайте некоторые вычисления на клиентской стороне по извлеченным строкам», я бы подумал о том, чтобы делать всю эту обработку в хранимой процедуре на сервере.

Вы можете просмотреть общие объекты и выполнить поиск в фоновом потоке.

Ограничить количество столбцов, полученных только теми, которые вам действительно нужны. «Выбрать * из таблицы» ВСЕГДА плохая идея ...

«Получить как нужно» может помочь, но это только если пользователь «подкачки» через строки в Интернете. Если это большой отчет, этот вариант не дает вам никаких преимуществ.

В конечном счете, всякий раз, когда есть «большое количество извлеченных строк», вам действительно нужно сесть и спросить, должны ли все эти данные вообще сходить в клиентское приложение.

-Поль Horan-

0

Асинхронного индексирование

Если вы должны получить так много строк, чтобы установить операцию базы данных асинхронными через свойство dbparm. Единственное, что это делает, это освободить графический интерфейс, дающий иллюзию лучшей производительности. Единственное, что асинхронно не поможет, - это время между отправкой запроса и возвращенной первой строкой, графический интерфейс будет заблокирован (песочные часы) до тех пор, пока первая строка не будет восстановлена, и после этого асинхронный режим позволит графическому интерфейсу быть нечасовым. С асинхронным, хотя у вас могут возникнуть проблемы с транзакциями в другом месте, поэтому рассмотрите возможность использования другого объекта транзакции.

Нет кода в случае DataWindow объект sqlpreview

Никогда не помещайте код, даже не комментарий в sqlpreview, если это абсолютно необходимо, потому что это не выполняется один раз для каждой строки и может замедлить извлечение драматически при получении много строк.

кэша данных выпадающий DataWindow или любые полу-статические данные, если это возможно

Если у вас есть выпадающий DataWindow с большим количеством строк, что может повлиять на производительность особенно много с большим количеством строк. Если данные являются статичными, вы можете кэшировать их в памяти, а затем вручную назначать данные в раскрывающемся окне данных с помощью функции datawindow getChild в сочетании с функцией shareData.

Получить данные в формате с разделителями

Это предложение действительно «там» за нормальной парадигмы программирования PowerBuilder, или какого-либо программирования по этому вопросу. Если данные и интерфейс позволяют вам потенциально использовать хранимую процедуру, которая возвращает данные в большой части, по существу разделенные данные, для которых вы будете импортировать строки в окно данных. Это то, чего я никогда не видел за последние 15 лет программирования PB, но это могло бы работать в нескольких обстоятельствах.При извлечении большого количества строк возникает много коммуникационных издержек, поэтому это минимизирует эти накладные расходы в пользу мощности и скорости перебора сервера, а также быстро импортирует функции строк.

Я согласен с ответом Павла, особенно ограничивая количество столбцов, поскольку это может значительно уменьшить размер извлечения. Блокировка параметров размера может помочь производительности, но, вероятно, не так много.

Смежные вопросы