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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.01.2009, 18:49   #1  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
2 while select или join?
Я всегда считал, что join таблиц отрабатывает быстрее чем 2 while select`а. Но вот увидел в коде двойной while select и решил "исправить". После переписывания запроса на join код стал выполняться дольше. Написал простой job
X++:
static void JobJoin(Args _args)
{
    SalesTable      SalesTable;
    SalesLine       SalesLine;
    int             startTime, endTime, i;
    ;

    startTime = timenow();
    while select SalesTable
    {
        while select SalesLine
           where SalesLine.SalesId == SalesTable.SalesId
        {
            i++;
        }
    }
    endTime = timenow();
    info(strFmt("2 while select: %1, i = %2", endTime - startTime, i));

    i = 0;
    startTime = timenow();
    while select SalesTable
        join SalesLine
            where SalesLine.SalesId == SalesTable.SalesId
    {
            i++;
    }

    endTime = timenow();
    info(strFmt("join: %1, i = %2", endTime - startTime, i));
}
У меня получилось (Ax 3.0 SP3 KR2, SQL2005 SP2)
X++:
2 while select: 99, i = 56347
join: 129, i = 56347
Получается что 2 while select'а отрабатывают быстрее Может кто нибудь дать научное обоснование сему явлению?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
Что лучше select RecId или select TableId Logger DAX: Программирование 9 02.06.2007 15:13
Глюки в Query с разными типами Join (в т.ч. NonExistsJoin) к одной таблице gl00mie DAX: Программирование 10 14.02.2007 13:22
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43
Join трех таблиц (две к одной) ATimTim DAX: Программирование 25 03.02.2005 11:31

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

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

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