MySQL InnoDB 删除重复行 - 超时?

标签 mysql innodb amazon-rds

我已经做了很多查找,我尝试过的每个解决方案似乎都不起作用。我已经删除了主键和自动增量。

我有一个大约有 260k 行的数据库。该架构如下所示: [架构] http://imgur.com/X0oROkc

它是 Amazon RDS 上托管的 MySQL innodb 实例。当我尝试执行以下命令来删除重复行(推文、用户名)时,我收到 2006 错误 - mysql 服务器已消失。

create temporary table tmpTable (id int);

insert  tmpTable
    (id)
select  id
from    rawTweets yt
where   exists
    (
    select  *
    from    rawTweets yt2
    where   yt2.tweet = yt.tweet
            and yt2.username = yt.username
            and yt2.id > yt.id
    );

DELETE FROM rawTweets USING rawTweets, tmpTable WHERE rawTweets.id=tmpTable.id

如有任何帮助,我们将不胜感激!

-马特

最佳答案

另一种方法可能如下:

创建一个与您拥有的相同的表,但在推文和用户名上添加唯一索引并插入替换所有行。

CREATE TABLE unique_tweets LIKE tweets;
ALTER TABLE unique_tweets ADD UNIQUE INDEX `uniq_username_tweet` (`username`, `tweet`);
REPLACE INTO unique_tweets (SELECT * FROM tweets);

之后只需重命名表即可。

关于MySQL InnoDB 删除重复行 - 超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42229046/

相关文章:

mysql - CPanel/MySql ENUM 将默认设置为 ' ' ?

java - 使用 mysql-connector-java jdbc 驱动程序 8.0.18 为 MySQL 8 服务器获取时间戳列的错误值

postgresql - 在 Amazon RDS (Postgresql) 上设置字符集

mysql - 2 auto_increment 字段,其中 1 重置

amazon-web-services - AWS RDS 代理连接

postgresql - 如何使用带有制表符分隔符的 `aws_s3.query_export_to_s3` 从 RDS/Aurora 导出到 S3?

php - 从MySQL获取数据时出现 undefined variable 错误

php - PHP 中的默认 session 时间是多少?如何更改它?

mysql - 加快从 MyISAM 到 InnoDB 的转换

mysql - 优化 MySQL 数据库索引 InnoDB