А ещё такой вопрос. У меня есть база со статистикой

звонков на 20 млн записей. И мне нужно в неё добавить 1 поле new_customer и пробежаться по всей базе и заполнить это поле исходя из условия:
беру datetime записи, и если этот кастомер звонил за последние 3 месяца то надо прописать 0, если он звонил более чем 3 месяца то 2, а если ни разу не звонил (1 звонок) то 1.
Я попытался сделать что то типа этого:
UPDATE calls a1
SET new_customer = CASE
WHEN EXISTS (
SELECT 1
FROM calls a2
WHERE a2.hashed_phone = a1.hashed_phone
AND a2.call_start < a1.call_datetime AND a2.call_start > (a1.call_datetime - INTERVAL 3 MONTH)
) THEN 0
WHEN EXISTS (
SELECT 1
FROM calls a3
WHERE a3.hashed_phone = a1.hashed_phone
AND a3.call_start < a1.call_datetime
) THEN 2
ELSE 1
END;
Пробовал ставить с ограничением на маленький диапазон и это очень долго выполнялось. По всей базе прям нереально долго бы было.
Может я что то туплю и какой то более очевидный способ не вижу без использования подзапросов?))

15 ответов

60 просмотров

>добавлять столбец в бд с 20 млн записей

Надо НЕ В ЭТУ таблицу это поле добавлять. В таблицу заказчиков.

Art- Автор вопроса
Vladislav Sh.
>добавлять столбец в бд с 20 млн записей

Ну там за несколько лет накопилось)

Art
Ну там за несколько лет накопилось)

А вы ещё и логически хотите заполнить новое поле. Тут на полдня спокойно крутиться может

Art- Автор вопроса
Ilya Zviagin
Надо НЕ В ЭТУ таблицу это поле добавлять. В таблиц...

это поле нужно чтобы отслеживать новых и вернувшихся клиентов.

Art
это поле нужно чтобы отслеживать новых и вернувших...

надо БД нормализовывать, слегка легче будет

использование подзапросов тут ничего не меняет

Давай лучше вернёмся к печке... У тебя под этот запрос индексы есть ?

Art- Автор вопроса
Ilya Zviagin
Давай лучше вернёмся к печке... У тебя под этот за...

все поля нужные с индексами (дата и хэш клиента)

Ilya Zviagin
Ну ?

нужно понять тип индексов

А почему никто не обратил внимание, что значения в этом новом поле могут стать неактуальными на следующий день. Какой вообще смысл именно заполнять поле? Не проще ли просто функцию написать и ее использовать при определении вида клиента в момент звонка оператору?

Maksim
А почему никто не обратил внимание, что значения в...

Нужно значение на момент совершения строки, все норм, я обращал внимание

Maksim
А почему никто не обратил внимание, что значения в...

Там аналитики скорее всего собираются искать корреляции между проводимыми акциями и числом возвратунов за временной период этой акции

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
2
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
кто-нибудь уже пробовал это?
Lencore
4
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
❓ Подскажите как сделать в группе телеги функцию (кнопку) пересылки сообщения где есть нарушение правил? Бот к каждому сообщению (по определенным ключам) добавляет снизу кнопк...
Alexander
4
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Карта сайта