问题分析

手机号码又主要分两种,018179700104和18179700104,即带0开头和不带0开头的。

邮编又分两种三位数的邮编和四位的邮编,如北京010,深圳0755.

结果一个来电号码要判断是否满足四种情况中的一种。Left join的haul就会产生巨大的数据量匹配,导致非常的缓慢。

:由于数据库数据量大,且来电归属地的表数据量庞大,还需要同时匹配手机号码和邮编。

首先我们来看一下,号码归属地的表

以上三列分别是判断归属地的手机号码,区号和对应的城市。为了实现同时匹配邮编和电话号码。我们需要将邮编和手机号码,合并成一列,并将对应的城市生成一列。

Postgresql的语句如下:

SELECT DISTINCT  phone,city from rd_attribution UNION ALL  SELECT DISTINCT city_code,city from rd_attribution

我们发现执行这条sql语句非常慢,需要6秒左右,如果我们用大量数据去和这个临时表left就会造成sql语句执行非常非常的缓慢。

所以我们可以创建一张表,专门用于存储这两个字段。这样我们就可以大大加快sql执行速度。

假设表名为city1

Sql语句如下:insert into city1(phone,city)  SELECT DISTINCT  phone,city from rd_attribution UNION ALL  SELECT DISTINCT city_code,city from rd_attribution

生成表如下:

接下来我们就考虑,如何实现连接这张表时字段一一对应,而不是判断一个字段可能满足手机号码,邮编其中的一种情况。

首先我们知道手机号码是11位数据,且是1开头。

当前面加0时,就是12位。

如果是座机的话,现在扩容后是8位。

如果区号是三位数,如010,加上八位座机号码,便是11位

如果区号是4位数,如0755,加上八位座机号码,便是12位

以上便有四种情况

电话号码长度

分析数据

0开头

11位

座机,且邮编3位

substr(n.calling_pty,1,3)

12位

1开头

手机号码

substr(n.calling_pty,2,7)

非1开头

座机,4位邮编

substr(n.calling_pty,1,4)

1开头

11位

正常手机号码

substr(n.calling_pty,1,3)

以上判断是为了让我们截取来电号码,去跟归属地表中的数据去判断,归属地。

我们在数据库中用case when来实现。以下是完整的查询归属地的语句。

select DISTINCT sd.*,s.city from  (
select DISTINCT t.num1,n.calling_pty,case when substr(n.calling_pty,1,1)='1' and length(n.calling_pty)=11 then substr(n.calling_pty,1,7)when substr(n.calling_pty,1,1)='0' and length(n.calling_pty)=11 then  substr(n.calling_pty,1,3)when substr(n.calling_pty,1,2)='01' and length(n.calling_pty)=12 then substr(n.calling_pty,2,7)when substr(n.calling_pty,1,1)='0' and length(n.calling_pty)=12 and substr(n.calling_pty,2,1)!='1'     then substr(n.calling_pty,1,4)else 'null'end  phonesfrom call_rec t left join call_rec n on t.callid=n.callidwheret.num1>'2017-11-01 00:00:00'and length(n.calling_pty)>7)  sdleft join city1 son sd.phones=s.phone

至此完美实现可快速匹配归属地。重点在对来电号码进行分析,处理。

快速实现大量数据匹配来电号码归属相关推荐

  1. 37来电号码归属地的显示

    我们使用服务监听电话. 在设置中心添加是否设置来电号码归属地的服务: <com.ustc.mobilemanager.ui.SettingItemViewowndefine:title=&quo ...

  2. Android中来电号码归属地的显示

    昨日实现了360手机卫士的来电显示归属地的功能,具体的功能就是当来电的时候,界面会弹出来一个自定义的土司,显示当前号码的归属地,学习之后发现操作非常的简单,总结下加强自己的回忆. 具体细节大概为:别人 ...

  3. Android实例-手机安全卫士(三十五)-来电号码显示归属地

    一.目标 1.显示来电号码的归属地: 2.可在"设置中心"设置"是否启用来电号码归属地显示" 二.代码实现 (以服务的形式监听来电状态) 1.在项目服务包中新增 ...

  4. Xt800、DEFY自带号码归属地更新包,更新至2013.4【数据总数278360条】

    总结了http://bbs.gfan.com/forum.php?mod=viewthread&tid=5603346&extra=page%3D1&page=1和http:/ ...

  5. android 改变来电号码,Android8.1 MTK平台 Dialer修改(来电全屏、归属地显示)

    来电默认全屏 默认情况下,来电android是以通知窗口的形式显示,只在屏幕的顶部显示,现在改为全屏显示 修改位置 alps\vendor\mediatek\proprietary\packages\ ...

  6. android 来电号码归属地,[Android] 来电归属地查询的实现思路

    想要监听来电首先需要要manifest中申明"android.permission.READ_PHONE_STATE"权限 Xml代码  还需要注册来电监听,目前我的处理方式是接收 ...

  7. 表格号码归属地查询的正确检测方式

    工具/原料: 能上网的电脑一台. 音速表格号码归属地 功能: 1 可以对表格中的归属地,运营商,进行快速的批量查询. 2 可以过滤表格当中重复的号码. 特点: 1. 查询以后的数据直观,明了. 2.  ...

  8. 根据来电号码显示人名

    根据来电号码显示人名 描述 : 当手机来电时会根据电话号码自动匹配保存在电话本中的人名,进行电话号码匹配时一般会根据号码的后多少位进行匹配,因为不同的网络环境下发的号码可能会不同,比如,有的地区显示区 ...

  9. 云小课|云小课带你快速掌握云数据迁移CDM

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:欢迎来到云数据迁移 ...

  10. excel两列相同匹配第三列_Vlookup函数解决Excel大量数据匹配问题

    先来讲讲使用这个函数的场景吧,最近遇到了一个难题,因为新老数据转移的问题,需要将老数据上传到新系统里,现在面临的是A表格内有设备编号,有设备属性,B表格内有设备安装位置,有设备编号,A表格内和B表格内 ...

最新文章

  1. Linux 配置开机自启 和 修改环境变量
  2. 机器学习基础:朴素贝叶斯及经典实例讲解
  3. 重磅!2021泰晤士世界大学排名公布,清华排名首次挺进top20
  4. gateway sentinel 熔断 不起作用_《一起学sentinel》一
  5. 自动感光调节LED灯亮度C语言程序,单片机PWM调节LED灯亮度
  6. [初级]Java命令学习系列(六)——jinfo
  7. 2020新时尚之都指数报告
  8. nginx优化配置选项
  9. Java word 内容读取
  10. python全栈学习--day8
  11. 操作数组的常用方式二-----排序、查找
  12. 如何填充自画形状_AI中如何用形状填充
  13. 价值连城 图灵奖得主Yoshua Bengio约书亚·本吉奥的采访 给AI从业者的建议
  14. 陈世清C语言程序设计课后答案,c语言程序设计报告.doc
  15. 锐捷虚拟机做服务器,笨方法解决锐捷校园网环境下VMware虚拟机无法上网问题(Fedora试用上网成功)...
  16. mac 配置mysql 环境变量
  17. GBDT梯度提升之二分类算法个人理解
  18. 短距离无线传输-WIFI
  19. python计算两个矩形的重叠_用Python检查两个矩形是否重叠的程序
  20. UE4_模型_Bound(边界)

热门文章

  1. c语言中的整型常量和实型常量
  2. 使用Unity动作融合概述
  3. 攻击局域网计算机,局域网攻击,网络攻击知识之几种IP地址攻击方式
  4. 震惊一个月销800万的模式,全新拼团模式全攻略(运营干货)
  5. 配置Eureka-client报EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT...
  6. 怎么把柱形图和折线图放在一起_Excel图表制作:柱形图和折线图的组合图案例...
  7. 抓取腾讯校园招聘的第一页
  8. 笔记本电脑连不上WIFI
  9. unity自己遇到的一些bug与解决方法的记录
  10. java中使用MD5验证文件的完整性