mysql插表简单处理办法

最近由于原先的单表数据项太多,决定拆成2张表,形成一对多的关系,

拆表原因:原数据表,以某id和时间(day)来 联合唯一索引, 随着数据越来越多,同一个某id的无用数据太多,每天存储的有用数据只有表字段的1/3,于是决定分表拆表,实现一对多的结构.最近由于原先的单表数据项太多,决定拆成2张表,形成一对多的关系,

拆表原因:原数据表,以某id和时间(day)来 联合唯一索引, 随着数据越来越多,同一个某id的无用数据太多,每天存储的有用数据只有表字段的1/3,于是决定分表拆表,实现一对多的结构.

先来看看原来的表结构:先来看看原来的表结构:

CREATE TABLE `ad_sdingba` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  `xxxx` varchar(50) DEFAULT NULL COMMENT '名称',
  `xxxx` datetime DEFAULT NULL,
  `xxxx` datetime DEFAULT NULL,
  `xxxx` varchar(10) DEFAULT NULL COMMENT '花费',
  `xxxx` int(11) DEFAULT NULL COMMENT '激活数',
  `xxxx` varchar(10) DEFAULT '' COMMENT '点击单价',
  `xxxx` int(11) DEFAULT NULL COMMENT '点击数',
  `xxxx` varchar(10) DEFAULT NULL COMMENT '激活成本',
  `xxxx` varchar(10) DEFAULT NULL COMMENT '千次展现价格',
  `xxxx` int(11) DEFAULT NULL COMMENT '展示数',
  `xxxx` tinyint(1) NOT NULL DEFAULT '0' COMMENT '计划状态 0 停止 1 运行',
  `xxxx` varchar(50) DEFAULT NULL,
  `xxxx` varchar(100) DEFAULT NULL COMMENT '标题',
  `xxxx` varchar(400) DEFAULT NULL COMMENT '内容',
  `record_day` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `xxxx` varchar(10) DEFAULT NULL COMMENT '出价',
  `xxxx` varchar(50) DEFAULT NULL COMMENT '投放平台',
  `xxxx` varchar(10) DEFAULT NULL COMMENT '点击率',
  `ad_id` varchar(20) DEFAULT NULL,
  `origi_id` varchar(20) DEFAULT NULL,
  `xxxx` int(11) DEFAULT NULL,
  `xxxx` varchar(32) DEFAULT NULL COMMENT '产品 id',
  `xxxx` int(11) DEFAULT NULL COMMENT '创建者Id',
  `xxxx` int(11) DEFAULT NULL COMMENT '平台',
  `xxxx` VARCHAR(10) DEFAULT NULL COMMENT '付费数据',
  PRIMARY KEY (`id`),
  UNIQUE KEY `adId_origi` (`origi_id`,`record_day`)
)

于是拆分2张表:

1,基本数据表于是拆分2张表:

1,基本数据表

create table ad_origi(
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
    `xxxx` varchar(50) DEFAULT NULL COMMENT '名称',
    `xxxx` datetime DEFAULT NULL COMMENT '开始时间',
    `xxxx` datetime DEFAULT NULL COMMENT '结束时间',
    `xxxx` tinyint(1) NOT NULL DEFAULT '0' COMMENT '计划状态 0 停止 1 运行',
    `xxxx` varchar(100) DEFAULT NULL COMMENT '标题',
    `xxxx` varchar(400) DEFAULT NULL COMMENT '内容',
    `bxxxd` varchar(10) DEFAULT NULL COMMENT '出价',
    `xxxx` varchar(50) DEFAULT NULL COMMENT '投放平台',
    `xxxx` varchar(20) DEFAULT NULL COMMENT '计划id',
    `origi_id` varchar(20) DEFAULT NULL COMMENT '创意id',
    `xxxx` varchar(50) DEFAULT NULL COMMENT '投放状态,对应投放平台爬取数据',
    `xxxx` varchar(32) DEFAULT NULL COMMENT '产品',
    `xxxx` int(11) DEFAULT NULL COMMENT '创建者Id',
    `xxxx` int(11) DEFAULT NULL COMMENT '平台',
    PRIMARY KEY (`id`),
    UNIQUE KEY `creative_id` (`origi_id`)
);

2,创意日期投放数据表 ,(每日投放创意 数据,点击,激活,等每日变动数据…)2,创意日期投放数据表 ,(每日投放创意 数据,点击,激活,等每日变动数据…)

create table ad_origi_data(
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
    `xxxx` varchar(10) DEFAULT NULL COMMENT '花费',
    `xxxx` int(11) DEFAULT 0 COMMENT '激活数',
    `xxxx` int(11) DEFAULT 0 COMMENT '展示数',
    `xxxx` int(11) DEFAULT 0 COMMENT '点击数',
    `xxxx` int(11) DEFAULT 0 COMMENT '延时激活',
    `xxxx` int default 0 COMMENT '实时点击数据',
    `xxxx` varchar(10) DEFAULT '' COMMENT '点击单价',
    `xxxx` varchar(10) DEFAULT NULL COMMENT '激活成本',
    `xxxx` varchar(10) DEFAULT NULL COMMENT '千次展现价格',
    `roi` VARCHAR(10) DEFAULT NULL COMMENT '创意roi 付费数据',
    `xxxx` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最新激活时间',
    `xxxx` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新点击时间',
    `origi_id` varchar(20) DEFAULT NULL COMMENT '创意id',
    `xxxx` varchar(10) DEFAULT NULL COMMENT '点击率',
    `record_day` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `adId_origi` (`origi_id`,`record_day`)
);

2,数据问题,,导出原来的数据到新表

-- 修改 ad_origi 数据  (把ad_originality表的数据 复制到 新表ad_origi)
insert into crm.ad_origi(name,start_time,end_time,running,title,comment,bid,platform,ad_id,origi_id,product_id,create_user_id,os)
select name,start_time,end_time,running,title,comment,bid,platform,ad_id,origi_id,product_id,create_user_id,os from ad_originality  group by origi_id;

-- 修改 ad_origi_data 数据;  (把ad_originality表的数据 复制到 新表ad_origi_data)
insert into crm.ad_origi_data(stat_cost,active_count,show_count,click_count,delay_active_count,
real_time_click,roi,active_update_time,click_update_time,origi_id,record_day) select stat_cost,active_count,show_count,click_count,delay_active_count,
real_time_click,roi,active_update_time,click_update_time,origi_id,record_day
ad_originality from ad_originality group by record_day,origi_id;

—————————– 修改 表索引;

如果原来的数据结构是2个索引,id 和 record_day,现在想要只要id索引就行(UNIQUE);-

-- 删除 ad_data ad_id重复数据,删除以record_day和ad_id重复,保留唯一不同的ad_id
-- 修改索引规则
delete from ad_data where id in (
select id from (
    select id from ad_data where ad_id in (select ad_id from ad_data group by ad_id having count(ad_id)>1)
    and id not in(select max(id) from ad_data group by ad_id having count(ad_id)>1)
) as tmpresult
);
-- 修改索引规则
DROP INDEX adId_date ON ad_data;
ALTER TABLE ad_data ADD UNIQUE (ad_id);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值