ответ понятен, но частично - в infosms есть записи, которым нет соответствия в operators по s.operator_id ?
да, в infosms бывают нулы.
Вы понимаете работу left join?
Разумеется.
Т.е. пишете их в запросе осознанно?
Ага.
Примерно половина вопросов про left join - от "автоматизированных построителей" или непонимания.
Я к ним не отношусь и построителей в глаза не видел.
Лефт нужен там, где он нужен
Вот пристали :) Он мне нужен! Именно там и так как я написал. И должен по логике быть внизу, после иннеров, так как ничего не отсекают. Но фича не в этом, фича в том, что если их убрать - время выполнения запроса увеличивается многократно. Считаю такое поведение - ошибкой в оптимизаторе, не иначе. Суть поста именно в этом. Надо бы проверить на 2.0. План в последнем случае такой: PLAN JOIN (S INDEX (INFOSMS_IDX8),SMS_STATES INDEX (PK_SMS_STATES,SMS_STATES_DOSHOW),SMS_SERVICES INDEX (PK_SMS_SERVICES)), где INFOSMS_IDX8 - индекс по pendingstate. Убиение индекса SMS_STATES_DOSHOW (созданного с утра в отчаянье) решило "проблему двух иннеров"