CREATE TABLE Keywords
(
keyID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(keyID),
KeyName text,
KeyNumber text,
KeyFlag int,
KeyNo int
);
现在这个表里大概有五千万左右的记录,字段KeyName有不少重复值,现在我想把这些重复的记录找出来并且删除,只保留最先出现的一条记录。KeyNumber是唯一的,没有重复值。KeyFlag和KeyNo有可能相同也有可能不同。现在想请大家帮我想个效率快点的执行语句。我自己写的效率太低,所以麻烦大家了!!!
(
keyID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(keyID),
KeyName text,
KeyNumber text,
KeyFlag int,
KeyNo int
);
现在这个表里大概有五千万左右的记录,字段KeyName有不少重复值,现在我想把这些重复的记录找出来并且删除,只保留最先出现的一条记录。KeyNumber是唯一的,没有重复值。KeyFlag和KeyNo有可能相同也有可能不同。现在想请大家帮我想个效率快点的执行语句。我自己写的效率太低,所以麻烦大家了!!!
select * from tt a where not exists(select 1 from tt where a.KeyName=KeyName and
a.Keyid>Keyid)在KeyName上建立索引
where b.minkeyid is null
a.Keyid>Keyid);
truncate tt;
insert into tt select * from newtt;
估计这样要快一些