Многопользовательская база данных для использования агентами по продажам, таблица содержит потенциальных клиентов для вызова. Одна запись отображается для оператора за один раз, чтобы он мог позвонить, после вызова агент обновляет запись с помощью закодированного результата вызова, взятого из таблицы результатов. В этой таблице некоторые результаты имеют время перезапуска, после которого запись должна отображаться оператору (любому оператору) для повторного вызова. На практике 80% звонков приведут к такой переработке записи. Также есть проверка ограничения общего количества звонков, общего количества дней звонков и общего количества звонков за один день. Агенты также могут указать, что они должны сами отозвать запись в установленную дату и время.
Чертеж схемы для иллюстрации
Проспект стол
PK
{контактные данные}
{XML поля для включения настраиваемых полей}
исход последнего звонка
дата последнего звонка
общее время называется
время называется сегодня
record_in_use_flag
(Я подумываю о том, чтобы клиентский интерфейс просто обновлял эту таблицу, обновляя информацию о перспективах, исходящие данные вызовов и агента, а затем триггер обновляет время, называемое полями / датой вызова, а также обновляет таблицу вызовов.)
Таблица вызовов
PK
ФК проспекту ПК
исход вызова
дата звонка
агент называется
(Агенты могут обновить запись перспективы, эти изменения не отслеживаются, но запись вызова и результата сохраняется)
Таблица результатов
код результата (PK)
время перезарядки в минутах
Таблица запланированных обратных вызовов
PK
ФК проспекту ПК
Дата и время
агент
Мой вопрос
Каков наиболее эффективный способ выбора записей, которые следует вызывать следующим, которые будут масштабироваться лучше всего? Я уже решил сохранить информацию о последнем звонке и некоторую вычисленную информацию (количество звонков и т. Д.) В таблице проспекта, поэтому присоединение к таблице звонков не требуется.
a) Если каждый запрос базы данных на записи добавляет время повторения исхода вызова к дате последнего вызова, а затем фильтрует ТОП 1 (думаю, это будет слишком медленно)
b) Должен ли я создать еще одну таблицу с проспектом PK, с указанием даты и времени соответствующего вызова для каждой записи в таблице проспекта, которую необходимо вызвать повторно. Может обновить это:
1) отдельная процедура, которая, скажем, запускалась каждые 10 минут? Результаты, в которых время перезарядки изменилось, необходимо пересчитать
2) в триггере таблицы перспективы, который запускается после обновления результата. Результаты, в которых время перезарядки изменилось, необходимо пересчитать
(Эта новая таблица будет обновлена, если время повторного использования для результата изменилось)