Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Nested Joins
|
|||
|---|---|---|---|
|
#18+
Извиняюсь за чайницкий вопрос, но что такое nested joins и когда (в общих чертах) их имеет смысл использовать? В ВOL чего-то про них почти ни слова не сказано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2002, 14:31 |
|
||
|
Nested Joins
|
|||
|---|---|---|---|
|
#18+
В BOL ничего нет потому что нет в MS SQL nested joins, а есть три типа join - nested loops, merge и hash отличаются они алгоритмом объединения таблиц, какой тип использовать решает оптимизатор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2002, 14:38 |
|
||
|
Nested Joins
|
|||
|---|---|---|---|
|
#18+
А это тогда у меня что, если не nested joins? SELECT c."ObjectID", dbo.GetSubjectFullName(subj_plntf.ObjectID) AS FIO_PLNTF, dbo.GetSubjectFullName(subj_dfndt.ObjectID) AS FIO_DFNDT, c."Number" AS CASEFIRSTNUMBER FROM dbo."Case" c left JOIN ("dbo"."Participant" p JOIN "dbo"."ParticipantCategory" pcat ON (pcat."ObjectID"=p."ParticipantCategory" and pcat."Code"= 'S1') JOIN "dbo"."Subject" subj_plntf ON subj_plntf."ObjectID" = p."Subject" ) ON p."Case"=c."ObjectID" left JOIN ("dbo"."Participant" p2 JOIN "dbo"."ParticipantCategory" pcat2 ON (pcat2."ObjectID"=p2."ParticipantCategory" and pcat2."Code"= 'S2') JOIN "dbo"."Subject" subj_dfndt ON subj_dfndt."ObjectID" = p2."Subject" ) ON p2."Case"=c."ObjectID" ORDER BY CASEFIRSTNUMBER, FIO_PLNTF, FIO_DFNDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2002, 18:32 |
|
||
|
Nested Joins
|
|||
|---|---|---|---|
|
#18+
2 savin Выделите пожалуйста то место в коде где по вашему присутствует nested join. Объясните мне почему вы считаете что это именно nested join. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2002, 04:07 |
|
||
|
Nested Joins
|
|||
|---|---|---|---|
|
#18+
left JOIN ("dbo"."Participant" p JOIN "dbo"."ParticipantCategory" pcat ON (pcat."ObjectID"=p."ParticipantCategory" and pcat."Code"= 'S1') JOIN "dbo"."Subject" subj_plntf ON subj_plntf."ObjectID" = p."Subject" ) ON p."Case"=c."ObjectID" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2002, 05:55 |
|
||
|
Nested Joins
|
|||
|---|---|---|---|
|
#18+
Я согласен с Геннадием, нету такого понятия как "Nested Joins" в MS SQL. Следующие картинки поясняют разницу "вложенного" объединения и обычного "плоского". "Вложенные" объединения "Плоские" объединения Как видно, первый способ оптимизатор считает более быстрым, возможно потому, что там отбрасываются лишние записи и используется Nested Loop вместо Hash Match. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2002, 07:26 |
|
||
|
Nested Joins
|
|||
|---|---|---|---|
|
#18+
2 savin Ах вон вы о чем Вообщето монстровидный запрос, и есть уменя подозрение что если вы уберете скобки, результат запроса не измениться Посмотрите статью в BOL "joins-SQL Server, three or more tables". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2002, 08:03 |
|
||
|
Nested Joins
|
|||
|---|---|---|---|
|
#18+
Если бы не менялось, я бы и без скобок написал. Но если писать его без скобок, то там вообще ни одной записи не возвращается. А так - и дела с участниками(с перечислением попарно оных), и дела без них. На мысь использовать скобки навела меня статья в MSDN. Но там про Access было. Я вот и решил попробовать эту технику в SQL2000. на удивление сработало сразу так, как я и хотел. Просто потом стало интересно, такой финт ушами где-то документирован (BOL) или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2002, 08:29 |
|
||
|
Nested Joins
|
|||
|---|---|---|---|
|
#18+
2 savin Хм, по быстрому в BOL ничего найти не удалось. У меня к вам просьба, если не сложно сбросьте копии планов запросов со скобками и без мне на mail. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2002, 09:42 |
|
||
|
Nested Joins
|
|||
|---|---|---|---|
|
#18+
Посмотрел планы, отличия понятны, в BOL информация есть, но какая то она невнятная см "FROM clause, FROM clause (described)" Цитатата: < joined_table > ::= < table_source > < join_type > < table_source > ON < search_condition > | < table_source > CROSS JOIN < table_source > | [ ( ] < joined_table > [ ) ] Еще цитата: < joined_table > Is a result set that is the product of two or more tables, for example: SELECT * FROM tab1 LEFT OUTER JOIN tab2 ON tab1.c3 = tab2.c3 RIGHT OUTER JOIN tab3 LEFT OUTER JOIN tab4 ON tab3.c1 = tab4.c1 ON tab2.c3 = tab4.c3 For multiple CROSS joins, use parentheses to change the natural order of the joins. Более подробно можно почитать здесь: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/office97/html/output/F1/D2/S5A32A.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/office97/html/output/F1/D2/S5A32D.asp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2002, 13:03 |
|
||
|
Nested Joins
|
|||
|---|---|---|---|
|
#18+
Я фигею, уважаемая редакция. Ведь вложенные соединения давно документированы в ANSI SQL, и ими я пользовался ещё в Interbase. Сразу скажу, что, естественно, nested joins в природе существуют. Но всегда надо очень точно знать, приносят они тебе выгоду или нет. Так, в половине случаев запросы с nested joins удалось переписать в запросы с подзапросами или в несколько запросов с применением переменной-таблицы, что дало мне ускорение до 40%. Разная отчётность. В общем, смотрите сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2002, 16:11 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3511&tid=1824160]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 298ms |

| 0 / 0 |
