小编Gar*_*hl 的帖子

删除所有重复项

我正在尝试删除所有重复项,但仅保留单个记录(更短的 ID)。以下查询删除重复项,但需要大量迭代才能删除所有副本并保留原始副本。

DELETE FROM emailTable WHERE id IN (
 SELECT * FROM (
    SELECT id FROM emailTable GROUP BY email HAVING ( COUNT(email) > 1 )
 ) AS q
)
Run Code Online (Sandbox Code Playgroud)

它的 MySQL。

数据线

CREATE TABLE `emailTable` (
 `id` mediumint(9) NOT NULL auto_increment,
 `email` varchar(200) NOT NULL default '',
 PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=298872 DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)

mysql delete duplication

8
推荐指数
1
解决办法
6785
查看次数

快速 MySQL 备份(每表 1 个文件)

我问了一个相关的问题几个月前,得到了各种各样的备份选项的答案。但是这次我有不同的场景,我有一个包含 7 个表的数据库,其中一个超过 20GB(table1),另一个(table6)为 13GB,而所有其他表都远低于 500MB。

在当前场景中,更大的表(table1)将获得更多数据,所以我想创建另一个具有相同架构的表(table1-1)并将所有新数据插入该表中。因为大多数情况下有 INSERT 调用,很少对 table1 进行 UPDATE 调用,并且所有插入的数据都基于 table2 中的 ID。(我认为虽然知道这不是很重要)

所有表都是 MYISAM,table6 在不久的将来不会以相同的速度增长。

现在我想向大师们问几个问题,也问几个备份解决方案。

首先..你认为我已经增长到 20GB 以上并且创建具有相同模式的新表对我有帮助,因为大多数情况下都有 INSERT 调用,因此与插入表相比,插入新位置对系统来说是轻的已经增长到 20GB+。

所有这些表都在单个数据库中,所以我想备份整个数据库而不是 1 个大文件,而是每个表应该有 1 个文件,因为它会减少保留现在始终包含 table1 的本地副本的开销。实际上,如果将使用 table1-1,那么 table1 只会在一周内仅在本地复制一次,而其他人则每天在本地复制一次。

请建议我最好的备份方式,同时牢记数据大小和最少(仅必要)停机时间。

mysql myisam backup

5
推荐指数
1
解决办法
1112
查看次数

将 CHAR 转换为 BIT

我有一个 char(16) 数据类型的列,它被错误地设置为 char(16) 实际上它应该是 bit(1) 因为它只包含三个不同的值,如下所示:

  • 16 个字符长的字符串
  • 10 个字符长的字符串
  • 空白值

现在,我想将空白和 10 个字符长的字符串转换为 0,将 16 个字符的字符串转换为 1。但是表非常大,所以我认为我应该避免任何实验并追求最佳方法。

首先,我想创建和索引然后更新列,然后更改数据类型。

mysql type-conversion

3
推荐指数
1
解决办法
1928
查看次数

标签 统计

mysql ×3

backup ×1

delete ×1

duplication ×1

myisam ×1

type-conversion ×1