- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть подписчики, есть рассылка.
В temp создается связка - подписчки рассылка, и потом из нее по расписанию выбираем кому и что отправить и отпраавляем, отмечая, что письмо было отправлено.
Lord Maverik, в cms_subscribe есть id подписок, которые не существуют в cms_subscribe_temp?
Если я правильно понял запрос
FROM `cms_subscribe_temp` as `st`
LEFT JOIN `cms_subscribe` as `sb` ON (`st`.`id_subs` = `sb`.`id`)
limit 10
вы, кроме всего прочего, ищете записи в cms_subscribe_temp соответствия которым нет в таблице cms_subscribe. По крайней мере, LEFT JOIN используется в таких случаях.
Для чего он использован в рамках вашей задачи я не могу понять. Но я с SQL работал последние годы мало, больше с NoSQL (Mongo). С SQL только с PostgresQL (полнотекстовый поиск как замена сфинксу использовали).
Может я неправильно понял задачу, но, как мне кажется, вам нужен простой WHERE, без LEFT JOIN.
по расписанию выбираем кому и что отправить и отпраавляем, отмечая, что письмо было отправлено.
ИМХО, лучше разбить на два запроса..
Первым - выбрать то, что по расписанию положено отправить..
Вторым - дёрнуть нужные для отправки данные из другой таблицы, используя конструкцию WHERE id IN (...id-шники из результата первой выборки..)
У меня как-то многоэтажный join запрос в 100 ускорился, когда методом тыка увеличили join_buffer_size. В моем случае до 4M
Переделал в итоге на 2 запроса. И вообще заодно перестроил логику работы. Просто летает теперь )
---------- Добавлено 11.11.2019 в 07:05 ----------
вы, кроме всего прочего, ищете записи в cms_subscribe_temp соответствия которым нет в таблице cms_subscribe. По крайней мере, LEFT JOIN используется в таких случаях.
Нет, не верно.
Я выбираю все не отправленные email и подтягиваю к ним данные из базы самой рассылке, что отправлять.
Делал давно, незнаю почему так сделал. Переделал на более логичный вариант. Выбираем активную рассылку, для нее уже выбираем кому отправлять. Если не кому, делаем рассылку неактивной.
Я выбираю все не отправленные email и подтягиваю к ним данные из базы самой рассылке, что отправлять.
Делал давно, незнаю почему так сделал.
Ну, я предполагал, что задумывалось другое или же задача первоначально другая стояла :)
Переделал в итоге на 2 запроса. И вообще заодно перестроил логику работы. Просто летает теперь )
Там по идее и одним запросом можно, но двумя даже понятнее и логичнее.