|
|
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Доброго времени суток участникам форума! Сегодня «открыл» для себя такой факт, что от выбора основной таблицы (к которой будут присоединяться join-ами другие таблицы) очень даже зависит производительность запроса. Пример: Код: plaintext 1. 2. 3. выполняется намного быстрее, чем: Код: plaintext 1. 2. 3. Первый отработал за ~3 минуты, выгрузив все ~82000 записей; второй (ради интереса я оставил его на выполнение) за 2 часа!! выгрузил только ~200 записей. Насколько я понимаю, производительность в данном случае зависит от расположения таблиц по сторонам отношения LEFT JOIN, состава этих таблиц и индексов, входящих в них. Вот, по сути, что и меня интересует – от чего в данном случае зависит скорость выполнения? Для чего служат и чем различаются LEFT, RIGHT, INNER, OUTER JOIN-ы? Разъясните на пальцах, может кто-нибудь выложит ссылки на литературу/источники с описанием сабжа. Хотелось бы, конечно, обсудить это здесь, на форуме, но другие источники - тоже хорошая вещь (может блажь в голову взбредет, и в свободное время почитаю :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2007, 21:32 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
Nike85 wrote: > Для чего служат и чем различаются LEFT, RIGHT, > INNER, OUTER JOIN-ы? Пока что это - главное, что должно Вас волновать. После осознания того, что у Вас - два РАЗНЫЙ запроса, которые, соответственно ДОЛЖНЫ возвращать РАЗНЫЕ результаты, которые выполняются ПО РАЗНОМУ.... Вот тогда то... зы В первом случае у вас left join, во втором - неявный inner join.... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2007, 22:16 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
Nike85 Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2007, 20:06 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
miksoft Nike85 Код: plaintext 1. k1 ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2007, 22:56 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифовk1 ???я полагаю, что k1 -это опечатка и должно быть просто k, т.к. более k1 нигде в запросе не упоминается. Кажется я понял, что имел ввиду locky. Если в таблице katmc поле nrec гарантированно ссылается на существующую запись в таблице sporder, то запрос будет эквивалентен INNER JOIN-у. Правда, этой гарантии в том, что написал автор темы я не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2007, 08:30 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
Nike85Здравствуйте! Доброго времени суток участникам форума! Сегодня «открыл» для себя такой факт, что от выбора основной таблицы (к которой будут присоединяться join-ами другие таблицы) очень даже зависит производительность запроса. Пример: Код: plaintext 1. 2. 3. выполняется намного быстрее, чем: Код: plaintext 1. 2. 3. Первый отработал за ~3 минуты, выгрузив все ~82000 записей; второй (ради интереса я оставил его на выполнение) за 2 часа!! выгрузил только ~200 записей. Насколько я понимаю, производительность в данном случае зависит от расположения таблиц по сторонам отношения LEFT JOIN, состава этих таблиц и индексов, входящих в них. Вот, по сути, что и меня интересует – от чего в данном случае зависит скорость выполнения? Для чего служат и чем различаются LEFT, RIGHT, INNER, OUTER JOIN-ы? Разъясните на пальцах, может кто-нибудь выложит ссылки на литературу/источники с описанием сабжа. Хотелось бы, конечно, обсудить это здесь, на форуме, но другие источники - тоже хорошая вещь (может блажь в голову взбредет, и в свободное время почитаю :)) Я рад, что Вы открыли для себя истину Декартова Произведения множеств, план выполнения запросов и оптимизацию.... Если говорить "по-простому", то: LEFT JOIN - левая таблица join'a "отдаст" все свои записи, а правая - только по совпадающему ключу; для ненайденного в правой таблице ключа левой таблицы будет выдаваться NULL. Аналогично для RIGHT JOIN ("левая" надо заменить на "правая"). OUTER JOIN - полное соединение = полное декартово произведение множеств - выбираются все сочетания ключей связанных таблиц INNER JOIN - внутреннее соединение - выбираются записи таблиц с совпадающим значением ключа (когда пишем: Where a.abc=b.abc это и есть INNER JOIN "по умолчанию"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2007, 20:37 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
Nike85 пишет: > Сегодня «открыл» для себя такой факт, что от выбора основной таблицы (к > которой будут присоединяться join-ами другие таблицы) очень даже зависит > производительность запроса. Пример: Это ты заблуждаешься. Т.е. у тебя первая стадия. Ты уже понял, что выбор плана зависит от порядка JOIN-ов, но еще не понял, что зависимость эта случайна. > Вот, по сути, что и меня интересует – от чего в данном случае зависит > скорость выполнения? Для чего служат и чем различаются LEFT, RIGHT, > INNER, OUTER JOIN-ы? > Разъясните на пальцах, может кто-нибудь выложит ссылки на > литературу/источники с описанием сабжа. Хотелось бы, конечно, обсудить > это здесь, на форуме, но другие источники - тоже хорошая вещь (может Ага, много вопросов - и мало ответов. Опять на лицо все признаки первой стадии. Но возникает естественный вопрос -- при чем здесь db-design ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2007, 23:43 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
locky пишет: > Пока что это - главное, что должно Вас волновать. > После осознания того, что у Вас - два РАЗНЫЙ запроса, которые, А что, афтар топега еще и не соблюдает семантическую эквивалентность запросов ? Уууу как все запущено ... Тогда это даже не первая стадия. 0.5. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2007, 23:47 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
miksoft wrote: > Кажется я понял, что имел ввиду locky. Если в таблице katmc поле nrec > гарантированно ссылается на существующую запись в таблице sporder, то > запрос будет эквивалентен INNER JOIN-у. Правда, этой гарантии в том, что > написал автор темы я не вижу. нет Код: plaintext 1. 2. s1.vidorder=0) на "левую" таблицу, что сводит left join к inner join Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2007, 12:37 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
lockyнет Код: plaintext 1. 2. s1.vidorder=0) на "левую" таблицу, что сводит left join к inner joinТочнее, на "правую". Но в целом согласен. Про where я как-то не подумал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2007, 12:42 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
miksoft wrote: > Точнее, на "правую". Да, сорри. Хотя - как посмотреть... "левая" - потому что присоеднияется "левым внешним" Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2007, 12:48 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
locky miksoft wrote: > Точнее, на "правую". Да, сорри. Хотя - как посмотреть... "левая" - потому что присоеднияется "левым внешним"так присоедияется-то справа. А "левой внешней" таблицей будет katmc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2007, 12:55 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
Велика Сила Веры. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2007, 13:28 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовВелика Сила Веры. :)а? я что-то пропустил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2007, 13:29 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
miksoft locky miksoft wrote: > Точнее, на "правую". Да, сорри. Хотя - как посмотреть... "левая" - потому что присоеднияется "левым внешним"так присоедияется-то справа. А "левой внешней" таблицей будет katmc.Точнее "внешним" (сохраняющим нестыкованные записи) будет тот кто слева / справа / оба по тексту запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2007, 15:31 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
Станислав С...кий OUTER JOIN - полное соединение = полное декартово произведение множеств - выбираются все сочетания ключей связанных таблиц. здесь вы ошибаетесь. декартово произведение называется cross join. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 09:31 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
MasterZiv Ты уже понял, что выбор плана зависит от порядка JOIN-ов, но еще не понял, что зависимость эта случайна. Можно поспорить о случайности этой зависимости... Все зависит от СУБД и типа оптимизатора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 10:24 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
MasterZiv wrote: > Это ты заблуждаешься. Т.е. у тебя первая стадия. Ты уже понял, что > выбор плана зависит от порядка JOIN-ов, но еще не понял, что зависимость > эта случайна. Вроде как справедливо для CE, для прочих - зависит тупизны оптимизатора/данных/метаданных. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 12:33 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
to Nike85 : посмотри в документации "SQL Server Books Online", я сам оттуда познал предназначение джойнов :) и вообще полезная дока ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 13:00 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто ты заблуждаешься. Т.е. у тебя первая стадия. Ты уже понял, что выбор плана зависит от порядка JOIN-ов, но еще не понял, что зависимость эта случайна. Странная формулировка. Если "выбор планов зависит от порядка join-ов", это очень плохо и показывает несовершенство оптимизатора. Хотя, помнится, в беседе об ansi синтаксисе join-ов некоторые коллеги рассматривали это как преимущество. Однако, "случайная зависимость" - этот термин меня заинтриговал. Нельзя ли дать ему какое-либо мало-мальски формальное определение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 15:34 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
softwarer MasterZivслучайна. Если "выбор планов зависит от порядка join-ов", это очень плохо и показывает несовершенство оптимизатора. Хотя, помнится, в беседе об ansi синтаксисе join-ов некоторые коллеги рассматривали это как преимущество. Однако, "случайная зависимость" - этот термин меня заинтриговал. Нельзя ли дать ему какое-либо мало-мальски формальное определение.гм. софтваре, вы действительно не въезжаете, что цытируемое - шутка юмора? Или настолько не понимаете [ansi синтаксисе join-ов] чтобы не увидеть, что там оптимизатору предлагаются разные запросы? (по поводу чего видимо шутка юмора и случилась) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 16:37 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
assaгм. софтваре, вы действительно не въезжаете, что цытируемое - шутка юмора? Или настолько не понимаете [ansi синтаксисе join-ов] чтобы не увидеть, что там оптимизатору предлагаются разные запросы? (по поводу чего видимо шутка юмора и случилась) Хм. assa, отрадно видеть человека, который верит в свои теории несмотря на явное противоречие фактам. В данном случае - Ваша теория опирается на гипотезу "автор пошутил, поскольку увидел что разные запросы", в то время как задокументирован факт - автор узнал об этом расхождении после публикации своего сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 17:11 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
softwarer assaгм. софтваре, вы действительно не въезжаете, что цытируемое - шутка юмора? Или настолько не понимаете [ansi синтаксисе join-ов] чтобы не увидеть, что там оптимизатору предлагаются разные запросы? (по поводу чего видимо шутка юмора и случилась) Хм. assa, отрадно видеть человека, который верит в свои теории несмотря на явное противоречие фактам. В данном случае - Ваша теория опирается на гипотезу "автор пошутил, поскольку увидел что разные запросы", в то время как задокументирован факт - автор узнал об этом расхождении после публикации своего сообщения.уууу, как всё запущено. мне например очевидно наличие 2-х полседовательно выданных мастазивом шуток йумора. поскольку вы полагаете, что первая произошла до осознания отсутсвия семантической инвариантности, можно думать что вторая явно показывает несерьезность и первой. (на чем я ,впрочем споткнувшись, не особо фиксировался по прочтении, но шутку тады оценил (давно это было, т.ч. извините, не пересмотрел контекст нонче - писал по памяти, "вспылил"). теперь теряюсь в догадках - то ли оценивать ваше Ч.Ю. на где-то запредельном для меня уровне, то ли - напротив. зы. вот ту недавно наткнулся на трактат беклемишева по женской логике. что интересно - редкий педант (т.е. - зануда - с общеупотребительной т.з.), вернее даже - редкостный, - а какое, оказывается, ч.ю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 19:03 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
assaуууу, как всё запущено. мне например очевидно Угу. 1. "Очевидное утверждение - утверждение, которое автору так и не удалось доказать" 2. "Если факты противоречат теории - тем хуже для фактов". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 19:56 |
|
||
|
ПРОИЗВОДИТЕЛЬНОСТЬ запроса или что такое JOINы??
|
|||
|---|---|---|---|
|
#18+
softwarer assaуууу, как всё запущено. Угу. 1. "Очевидное утверждение - утверждение, которое автору так и не удалось доказать" 2. "Если факты противоречат теории - тем хуже для фактов".вы таки йуморисд. (единственный способ зануде стать йумориздом - оставаться последовательным занудой. ничего смешнее в жизни видимо не бывваит) по поводу "не удалось", и вообще "преклонения мущщин перед самим процессом логического вывода" - щербаков(с)В ту пору часто, закрыв учебник, я от амбиций моих ущербных провозглашал решённым вопрос любой. И заключал, что двойного смысла иметь не могут слова и числа, и пребывал отчаянно горд собой . Но проходила неделя, две ли, слова смещались куда хотели, как А и Б, сидевшие на трубе. И числа вновь обретали сложность. И сознавал я свою ничтожность, и изнывал от ненависти к себе... вопрос тут не в "удалось" - "не удалось", а в исходных посылках. а вот поскольку они тут произвольны -, то "самоочевидные" вещи как раз и могут быть приняты в их качестве. т.ч. никакой потребности в изображении длинной "логической" цепочки из стоь же потолочных соображений, единственно с целью потрясть оппа-нента, я тут не испитывайу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2007, 12:31 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34789995&tid=1544301]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
176ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 492ms |

| 0 / 0 |
