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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.01.2009, 20:07   #1  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Какой способ будет быстрее и насколько зависит от отношения количества записей в salesTable и salesLine.

При одной записе в salesTable и 100 в salesLine - быстрее будет while select - см. пред. пост.

При одинаковом кол-ве записей в salesTable и salesLine - быстее будет join.
За это сообщение автора поблагодарили: _scorp_ (1).
Старый 23.01.2009, 11:42   #2  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Провёл небольшие "исследования", вот некоторые выкладки. Мысли в конце.

Цитата:
Oracle, Master\Detail:
2 while select: 400, i = 128285
join: 255, i = 128285
Причём, если аналог прокрутить на БД с использованием PL\SQL, то результаты - 18 и 14 сек! Чувствуется разница. Это на тему влияния RPC и перекачки данных по сети...
Но пропорции времени в пользу join.
На бОльших объёмах - разница ещё больше.


Oracle, 2theSameTables:
2 while select: 195, i = 10213
join: 23, i = 10213
Пропорции (сторона) сохраняются (и даже увеличиваются) при одинаковом кол-ве записей

MSSQL2005, Master\Detail:
2 while select: 45, i = 68825
join: 148, i = 68825
На сиквеле действительно картина обратная

MSSQL2005, 2theSameTables:
while select: 222, i = 68825
join: 57, i = 68825
Пропорции меняются на обратные
Почему так происходит? когда идёт соединение маленькой + большой таблиц сиквел предпочитает использовать в Nested Loop доступ к первой таблице по кластерному индексу. Во втором случае, когда 2 большие одинаковые таблицы - full scan. Ко второй таблице по индексу в обоих случаях. Похоже за счёт этого такая картина... Хотя я всё равно не понимаю почему такая большая разница... Это скорее вопрос к гуру сиквела, почему cluster index scan так тормозит....

Oracle же в обоих случаях использует hash join.
но, даже если уговорить его использовать нестедлуп, то картина не менятся особо - всё равно джоин быстрее...
__________________
Zhirenkov Vitaly
За это сообщение автора поблагодарили: _scorp_ (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Разница 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, время: 04:25.