|
![]() |
#1 |
Участник
|
Какой способ будет быстрее и насколько зависит от отношения количества записей в salesTable и salesLine.
При одной записе в salesTable и 100 в salesLine - быстрее будет while select - см. пред. пост. При одинаковом кол-ве записей в salesTable и salesLine - быстее будет join. |
|
|
За это сообщение автора поблагодарили: _scorp_ (1). |
![]() |
#2 |
MCITP
|
![]()
Провёл небольшие "исследования", вот некоторые выкладки. Мысли в конце.
![]() Цитата:
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 Пропорции меняются на обратные ![]() Oracle же в обоих случаях использует hash join. но, даже если уговорить его использовать нестедлуп, то картина не менятся особо - всё равно джоин быстрее...
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: _scorp_ (2). |