Я создаю интеллектуальный номеронабиратель, где скорость имеет решающее значение. Чтобы набрать номер, я извлекаю информацию о клиентах из таблиц и создаю файлы вызовов для работы с АТС.
В настоящее время у меня есть таблица для каждого кода города, и мы набираем один код города за раз, но мы переходим на модель, в которой мы набираем номер на основе территорий, которые охватывают несколько почтовых индексов. Некоторые коды городов существуют в нескольких почтовых индексах. В каждую таблицу ежемесячно добавляются новые номера, которые очищаются путем сравнения со списком из нескольких миллионов номеров, которые нельзя звонить.
Итак, мой вопрос: как мне наиболее эффективно организовать эти данные?
Одна большая таблица кажется контрпродуктивной, поскольку речь идет о миллионах записей очищенных данных.
Моя текущая цепочка рассуждений состоит в том, чтобы поддерживать таблицы кодов областей для импорта и очистки, а затем копировать очищенные записи в таблицы территорий, созданные путем поиска в таблицах кодов областей почтовых индексов в этой области.
В настоящее время я индексирую таблицы по первичному ключу INT с автоматическим приращением, уникальному номеру телефона и статусу, который отслеживает номера, на которые уже звонили или которые находятся в списке «не звонить». При создании файла вызова я помечаю запись как поставленную в очередь, а затем отмечаю ее в соответствии с тем, как проходит вызов после его завершения, поэтому для каждого вызова есть поиск и два обновления.
Поиск ищет в таблице кодов городов определенный статус. Обновления происходят на основе идентификатора записи.
Суть вопроса заключается в следующем: будет ли быстрее организовывать их по почтовым индексам и искать по статусу или сохранять их организованными по коду города и искать по статусу и почтовому индексу? Или лучше создавать новую таблицу каждый раз, когда мы настраиваем территорию, построенную из таблиц кодов областей?
Простите меня, если это покажется глупым вопросом, я учил себя SQL, пока создавал это, и нюансы проектирования и производительности базы данных немного выходят за рамки моих навыков.
Общий размер таблиц составляет 2 миллиона строк и продолжает расти.