在将数据插入表之前,我需要检查重复记录并报告这些记录的列表。 如果至少有一个副本,则查询不应插入任何内容。
要插入的记录数:~1000
表中的行:~1.000.000
表:
CREATE TABLE `test` (
`A` varchar(19) NOT NULL,
`B` varchar(9) NOT NULL,
KEY `A` (`A`),
KEY `B` (`B`)
) ENGINE=InnoDB;
我需要检查两列:
这样做的有效方法是什么。
提前致谢。
P.S。考虑使用php和mysql
答案 0 :(得分:1)
说重复表示用户名已存在。所以你可以试试:
1]使用for循环对插入列表中的所有用户名进行分组:伪代码如下:
$names="";
for(each element){
$names.=$val.", ";
//remove last comma ","
然后使用以下sql语句获取所有重复的条目。
select * from myTable where username in ($names);
获得所有重复项的列表,然后插入
insert into myTable (username, address, otherstuff)
values("henry", "35 skid", "who knows")
ON DUPLICATE KEY UPDATE
otherstuff = values(otherstuff);
答案 1 :(得分:0)
这样做的一种方法可能是插入所有内容,然后select duplicates以输出它们;如果发现任何回滚整个操作。那会非常昂贵。