如何解决在MySQL上加快删除重复项命令
id | abstract_text |
1 | long paragraph1 |
2 | long paragraph2 |
3 | long paragraph1 |
它具有大约150,000个唯一ID,但是某些ID具有相同的abstract_text值(例如1和3)。
我正在使用此命令
delete t1 from t1
inner join t1 t2
where
t1.application_id < t2.application_id AND
t1.abstract_text=t2.abstract_text;
但是,已经超过2个小时,并且尚未完成运行。 abstract_texts是很长的段落,所以我知道它不会很快。我尝试创建索引,但是由于不能使用abstract_text b / c创建索引而太长(抛出ER_TOO_LONG_KEY: Specified key was too long; max key length is 3072 bytes
错误),因此我不确定如何使用该索引。
有什么方法可以加快这一过程?
解决方法
删除操作对于数据库来说是一个昂贵的过程,您可以选择创建一个新表,在该表中删除重复的段落,
CREATE TABLE t3 AS
SELECT t1.application_id,t1.abstract_text
FROM t1
JOIN t1 t2
WHERE t1.application_id > t2.application_id
AND t1.abstract_text=t2.abstract_text
UNION ALL
SELECT MAX(application_id) AS application_id,abstract_text
FROM t1
GROUP BY abstract_text
HAVING COUNT(*)=1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。