我正在构建一个速度至关重要的预测拨号器。为了拨打这个号码,我从表格中提取客户信息并构建呼叫文件以供 pbx 采取行动。
目前,我为每个区号都有一个表格,我们一次拨打一个区号,但我们正在切换到一个模型,在该模型中,我们根据跨越多个邮政编码的领土进行拨号。一些区号存在于多个邮政编码中。每个表每月都会添加新号码,并通过与数百万个号码的请勿呼叫列表进行比较来清理。
所以我的问题是,我应该如何最有效地组织这些数据?
一张大表似乎适得其反,因为我们正在谈论数百万条已清理数据的记录。
我目前的推理是维护区号表以进行导入和清理,然后将清理后的记录复制到地区表中,通过在地区代码表中搜索该地区的邮政编码来创建。
我目前通过一个 auto_incremented INT 主键、一个唯一的电话号码和一个跟踪已被呼叫的号码的状态来索引这些表,或者在请勿呼叫列表中。在构建通话文件时,我将记录标记为排队,然后根据通话完成后的方式进行标记,因此对于每个通话,都会进行一次搜索和两次更新。
搜索在区域代码表中查找特定状态。更新基于记录 ID。
问题的核心是:按邮政编码组织并按状态搜索会更快,还是按区号组织它们并按状态和邮政编码搜索?或者每次我们建立一个从区号表构建的区域时,最好的办法是创建一个新表?
如果这似乎是一个愚蠢的问题,请原谅我,我一直在自学 SQL,因为我一直在构建它,并且数据库设计和性能的细微差别有点超出我的技能范围。
表的总大小为 200 万行并且还在增长。