zoukankan      html  css  js  c++  java
  • MySQL分表

    针对于mysql进行分表

    首先看一下这张表

    lagou_position_source(源数据表)

    严重的数据冗余

    4914591    西安        产品运营专员    数据服务,分类信息    5    8    3-5年    大专    运营|编辑|客服类 - 运营    全职    五险一金,周末双休    2018-07-26 15:05:05    2018-07-26 07:29:00    105728    北佳信息    陕西北佳信息技术有限责任公司    150-500人    不需要融资
    4914592    杭州        销售管理实习生    信息安全,数据服务    2    3    应届毕业生    本科    市场|商务|销售类 - 销售    实习    全员MAC,独角兽公司    2018-07-26 15:05:05    2018-07-26 07:29:00    6502    同盾科技    同盾科技有限公司    500-2000人    C轮
    4914589    杭州        省区经理(浙江)    移动互联网,医疗健康    6    10    不限    大专    市场|商务|销售类 - 销售    全职    双休,工作灵活,大平台    2018-07-26 15:04:44    2018-07-26 07:29:00    284208    神中科技    杭州神中科技有限公司    50-150人    天使轮
    4914587    北京        风控算法工程师    电子商务,金融    20    40    不限    本科    开发|测试|运维类 - 人工智能    全职    六险一金,团队氛围好    2018-07-26 15:04:43    2018-07-26 07:29:00    19243    趣店    趣分期(北京)信息技术有限公司    500-2000人    上市公司
    4914588    上海        大数据分析    移动互联网,硬件    18    30    3-5年    本科    开发|测试|运维类 - 数据开发    全职    五险一金,正式编制,交通便利,节假日福利    2018-07-26 15:04:43    2018-07-26 07:29:00    146293    闻善科技    深圳闻善科技有限公司    50-150人    不需要融资

    不满足范式

    所有我们需要进行分表,同时迁移里面的数据

    思路:首先源数据表lagou_position_source

    暂且我们直观的可以分出城市区域表(city)、公司表(company)、和职位表(position)

    我们以简单粗暴的方式创建

    首先来一张公司表

    drop table IF EXISTS lagou_company;
    create table lagou_company
        select  distinct company_id,company_short_name,
          company_size,company_full_name,financestage
        from lagou_position_new;

    查询出来的数据

    成功的分出来一张公司表

    现在来分析城市表(根据原有数据是有局限的)

    原因只是显示公司所在区域,下次添加一条记录,我需要地区根本无从选择

    所以在此需要有一个完整的区域表

    区域表

    此表也是需要分离

    得到需要的字段(关联方式为id,parentId)话不多说同理

    分离方法

    drop table if exists lagou_city;
    create table lagou_city as
    select s3.id cid,s1.cityName province,s2.cityName city,s3.cityName district from s_provinces s1
      right join s_provinces s2 on s2.parentId = s1.id
      right join s_provinces s3 on s3.parentId = s2.id
    union
    select s2.id,s1.cityName,s2.cityName,null from s_provinces s1
      right  join s_provinces s2 on s2.parentId = s1.id ;

    最后得到city表

    最后剩下position 既然分离出去了必定要有关联

    所以该删的删该加的加原有的city、district改为 position_city表的ID即可

    方法

    drop table  if exists lagou_position;
    create table lagou_position as
    SELECT p.pid,p.company_id,c.cid,p.position,
    p.field,p.salary_min,p.salary_max,p.workyear,
    p.education,p.ptype,p.pnature,p.advantage,p.published_at,p.updated_at
    FROM (SELECT *
            FROM lagou_position_source
            WHERE district IS NULL) p
        JOIN lagou_city c ON (c.city LIKE concat(p.city, '%') AND c.district IS NULL )
    union
    select p.pid,p.company_id,c.cid,p.position,
      p.field,p.salary_min,p.salary_max,p.workyear,
      p.education,p.ptype,p.pnature,p.advantage,p.published_at,p.updated_at
    from (select * from lagou_position_source where district is not null)p
      join lagou_city c on (c.city like concat(p.city,'%')
    and c.district like concat(p.district,'%'));

    lagou_position表

    结论:两个原(lagou_position_source)、(s_provinces)表分离成最后

    lagou_position;
    lagou_city ;
    lagou_company;
  • 相关阅读:
    2018.10.10python homework
    2018.10.10python学习第十六天part3
    2018.10.10python学习第十六天part2
    2018.10.10python学习第十六天part1
    2018.09.28python学习第十三天part3
    2018.09.28python学习第十三天part2
    2018.09.28python学习第十三天part1
    当不搞技术好几年后,又回来了,忽然很亲切
    福大软工 · BETA 版冲刺前准备(团队)
    事后诸葛亮
  • 原文地址:https://www.cnblogs.com/dzcici/p/9642879.html
Copyright © 2011-2022 走看看