Optimize the inactives sync SQL query [MAILPOET-2377]

This commit is contained in:
wxa
2019-09-23 17:47:32 +03:00
committed by Jack Kitterhing
parent a9d46d3ca0
commit 925e9ce15c

View File

@ -74,11 +74,17 @@ class InactiveSubscribersController {
$inactives_task_ids_table = sprintf("
CREATE TEMPORARY TABLE IF NOT EXISTS inactives_task_ids
(INDEX task_id_ids (id))
SELECT task_id as id FROM $sending_queues_table as sq
JOIN (SELECT newsletter_id as id FROM $statistics_opens_table as so WHERE so.created_at > '%s' GROUP BY newsletter_id) newsletters_ids ON newsletters_ids.id = sq.newsletter_id
JOIN $scheduled_tasks_table as st ON sq.task_id = st.id AND st.processed_at > '%s' AND st.processed_at < '%s'
GROUP BY task_id",
$threshold_date_iso, $threshold_date_iso, $day_ago_iso
SELECT DISTINCT task_id as id FROM $sending_queues_table as sq
JOIN $scheduled_tasks_table as st ON sq.task_id = st.id
WHERE st.processed_at > '%s'
AND st.processed_at < '%s'
AND EXISTS (
SELECT 1
FROM $statistics_opens_table as so
WHERE so.created_at > '%s'
AND so.newsletter_id = sq.newsletter_id
)",
$threshold_date_iso, $day_ago_iso, $threshold_date_iso
);
\ORM::rawExecute($inactives_task_ids_table);