有两表:
CREATE TABLE `database1`.`product` (
`id` char(36) NOT NULL COMMENT 'uuid',
`name` varchar(255) NOT NULL COMMENT '产品名称',
`cate_id` char(36) NOT NULL COMMENT '类别ID',
PRIMARY KEY (`id`),
CONSTRAINT `fk_product_cate` FOREIGN KEY (`cate_id`) REFERENCES `database1`.`cate` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
);
CREATE TABLE `database1`.`cate` (
`id` char(36) NOT NULL COMMENT 'uuid',
`name` varchar(255) NOT NULL unique COMMENT '类别名称',
PRIMARY KEY (`id`),
);
下面有些数据(来自excel):
产品名称 | 产品类别 |
---|---|
塑化剂 | 化学物品 |
光敏电阻 | 电感元件 |
压敏电阻 | 电感元件 |
假设!假设!这个表格有几百万几千万行的数据
要把这些数据插入到product
表,名称对应product.name
,类别对应外键product.cate_id
。
类别已存在cate
表中,不需要插入数据,只需要插入product
表数据并设置对应的类别ID。
综合效率与性能考虑,怎样插入数据比较好?
小弟笨拙,只想到这个方法:
先插入所有类别
- 每插入一行数据就查询一次
cate
表 (很明显,这个...) - 或者 把
cate
表的数据全拿出来,然后做好相应结构的数据再插入
- 每插入一行数据就查询一次
不知有没更优的方法
第二种方案不行吗?
如果能保证类别数据的正确性,可以先将product表的外键约束干掉,先插入数据后再添加外键约束