Оптимизация запроса: условие в соединении или в ГДЕ #743716


#0 by Ymryn
Мое почтение. Приношу извинения, если ошибся разделом, не смог точно определить где будет уместно, поэтому решил завести в ветке 1С8. Все-таки близкая тема. Итак есть запрос. SELECT L.ID as ID, COUNT(L.ID) as CNT FROM b_crm_lead L LEFT JOIN b_crm_usr_act UA ON UA.USER_ID IN (0,2530) AND UA.OWNER_ID = L.ID AND UA.OWNER_TYPE_ID = 1 GROUP BY L.ID друг утверждает, что перенос условий на UA.USER_ID IN (0,2530) и UA.OWNER_TYPE_ID = 1 (думаю аналогия с стандартными 1С запросами для многих ясна) из условий соединения в блок Where (Где), дает где-то n-цать кратный прирост производительности. Я в упор не могу понять за счет чего (он мне объяснить не смог, его дернули по работе в середине нашего разбирательства, освободится завтра). А очень и очень интересно и хочется устранить данный пробел в своих знаниях. Если кто-то сможет объяснить буду очень признателен :)
#1 by ДенисЧ
план запроса посмотри
#2 by Fragster
потому что left  превращается в inner
#3 by Fragster
+ если mysql - см. explain
#4 by Ymryn
это я понимаю. Но это уменьшит конечную выборку, но не должно давать такой прирост по производительности на этапе самой выборки. Ведь этот Where все равно наложится на общую таблицу.
#5 by Fragster
нет, результаты запросов будут разные
#6 by Ymryn
согласен. Результат разный. Я на уровне теории не понимаю, почему взять таблицу, перебрать вторую таблицу полностью по одному условию, потом перебрать получившуюся таблицу будет настолько быстрее чем перебрать изначально вторую таблицу по трем условиям. Неужели дополнительные условия при соединении такие тормозные? Мне именно теория сейчас интересна, поразбираться с планом запроса сейчас не смогу, ибо базой не обладаю.
#7 by Fragster
потому что оптимизатор умный. и если ты в поставишь inner с разу - то никакого прироста не будет - всё срезу будет быстро.
#8 by Ymryn
благодарю. Понял приблизительно. Еще покопаюсь самостоятельно. Огромное спасибо.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С