Эта задача состоит в том, чтобы преобразовать функцию, представленную ниже, в запрос, который будет выполняться быстро, так как наша текущая логика слишком медленная (имеет общее время выполнения 24 часа).Обратите внимание, что соответствующие столбцы уже проиндексированы.
Размер наших таблиц следующий;Таблица 1 - 300 000 строк Таблица 2 - 15 000 строк
Этот запрос сопоставляет даты телефонных звонков между двумя таблицами на основе номера телефона и идентификатора ближайшей исходящей даты.Первая таблица (Таблица телефонных вызовов 1) - это исходящие маркетинговые телефонные звонки, в то время как телефонные звонки из второй таблицы (Таблица телефонных звонков 2) содержат тот же номер телефона, но в контексте входящих звонков на номера, отображаемые в нашеммаркетинговые кампании.Логика сопоставляет самые последние исходящие телефонные звонки с таблицей входящих телефонных звонков на основе соответствующего времени и UID
Запрос выглядит следующим образом:
SELECT `Phone Number 2`, `Time of Call` FROM `Phone Call Table 2`
JOIN
`Phone Call Table 1`
ON `Phone Call Table 1`.`Phone_Call_Start_1` =
(SELECT MAX(`Phone_Call_Start_1`)
FROM `Phone Call Table 1`
WHERE `Phone_Call_Start_1` < `Phone Call Table
2`.`Phone_Call_Start_2`
AND `Phone Number 1` = `Phone Number 2`
) ;