AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.08.2005, 16:24   #1  
Vick is offline
Vick
Участник
 
7 / 10 (1) +
Регистрация: 30.09.2004
Адрес: Москва
? Скорость забора данных из Queries
Стандартно данные забирают так:
PHP код:
    qr = new QueryRun(query);
while(
qr.next())
{
   
tbl qr.getNo(1);
   .... 
// работа с tbl 

... а можно и так (быстрее):
PHP код:
    qr = new QueryRun(query);
if(
qr.next())
{
    
tbl qr.getNo(1);
    do
    {
        .... 
// работа с tbl 
    
}
    while(
qr.next())

... и самый быстрый вариант:
PHP код:
    qr = new QueryRun(query);
if(
qr.next())
{
    
tbl qr.getNo(1);

    while(
tbl)
    {
        .... 
// работа с tbl 
        
next tbl;
    }

Какие побочные эффекты возможны в двух паследних вариантах?
Старый 15.08.2005, 16:39   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
первый и второй варианты не эквивалентны.
1. запрос может содержать несколько несвязанных таблиц (см. руководство разработчика, ключевое слово Sequencing of retrieved records)
2. запрос может быть построен по map
3. запрос может быть построен по view

дополнительно.
в Query может быть переопределен метод next.
в Query может быть переопределен метод getNo.

Переопределение может произойти после того, как написан ваш метод.
__________________
полезное на axForum, github, vk, coub.
Старый 15.08.2005, 16:56   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Для второго и третьего варианта next() вызывается 2 раза для первой записи. Так что скорее всего вы её пропустите, если конечно не поставите обработку записи после


PHP код:
if(qr.next())
{
       
tbl qr.getNo(1); 
и ускорение скорее всего мнимое получалось, так как записи с сервера тянутся пачками по нескольку штук, то может показаться что извлечение первой записи происходит долго, а следующих за ней - быстро.

Вы уверены что измеряли во втором и 3-м примерах время получения всех записей, и не пропустили время получения первой ?
PHP код:
if(qr.next())
{
    
tbl qr.getNo(1); 
Старый 15.08.2005, 17:08   #4  
Vick is offline
Vick
Участник
 
7 / 10 (1) +
Регистрация: 30.09.2004
Адрес: Москва
Для второго случая должно быть (ошибся и исправил на первом посте):
PHP код:
    if(qr.next())
{
    
tbl qr.getNo(1);
    do
    {
         ...
    } 
    while(
qr.next();

а в третьем все обработаются...

Измерялось время в цикле без первого qr.next()
Старый 15.08.2005, 17:15   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Измерялось время в цикле без первого qr.next()
в таком случае не извращайтесь.

Такими приемами никакого ускорения получить не удастся.
Старый 15.08.2005, 17:30   #6  
Vick is offline
Vick
Участник
 
7 / 10 (1) +
Регистрация: 30.09.2004
Адрес: Москва
Первоначально заметил разницу во времени между двумя вариантами одной и той же выборки данных:
1) через select...
PHP код:
select tbl ...
while(
tbl)
{
....
next tbl;

2) через QueryRun

Первый был быстрее секунд на 20 при 11000 записей...
Старый 15.08.2005, 17:41   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Vick, хотите совет?
Поищите подобные обсуждения на форуме. Они уже были.
__________________
полезное на axForum, github, vk, coub.
Старый 15.08.2005, 23:00   #8  
БП is offline
БП
Участник
 
28 / 10 (1) +
Регистрация: 02.06.2005
Re: Скорость забора данных из Queries
Цитата:
Изначально опубликовано Vick
Какие побочные эффекты возможны в двух паследних вариантах?
Используем do-while? Ну-ну.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Невозможно выполнить команду языка определения данных в () iHomer13 DAX: Программирование 8 18.07.2008 10:56
разная скорость отработки display методов на источнике данных формы wojzeh DAX: Программирование 10 05.05.2008 23:53
Стандартный импорт данных. Обновление sparur DAX: Функционал 0 24.03.2008 19:07
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:24.