首页
学习
活动
专区
圈层
工具
发布

面试突击63:MySQL 中如何去重?

在 MySQL 中,最常见的去重方法有两个:使用 distinct 或使用 group by,那它们有什么区别呢?接下来我们一起来看。...我们先用 distinct 实现单列去重,根据 aid(文章 ID)去重,具体实现如下: 2.2 多列去重 除了单列去重之外,distinct 还支持多列(两列及以上)去重,我们根据 aid(文章...ID)和 uid(用户 ID)联合去重,具体实现如下: 2.3 聚合函数+去重 使用 distinct + 聚合函数去重,计算 aid 去重之后的总条数,具体实现如下: 3.group by...distinct 和 group by 的区别 官方文档在描述 distinct 时提到:在大多数情况下 distinct 是特殊的 group by,如下图所示: 官方文档地址:https://dev.mysql.com...by 和 distinct 都可以使用索引,此情况它们的性能是相同的;而当去重的字段没有索引时,distinct 的性能就会高于 group by,因为在 MySQL 8.0 之前,group by

4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL 数据恢复

    MySQL 数据恢复 前言 前两天因为没注意的误操作, 直接把某个数据表清掉了, 心慌慌. 怪自己学艺不精, 当时整了一下午也没把数据找回来....增量备份就是 mysql 的binlog了....数据恢复 当需要恢复数据时, 如何根据这两个备份文件进行恢复呢? 打个比方, 当前时间是: 2020-9-4 23:00:00. 此时, 我做了清表的疯狂操作. 如何恢复数据? 1....通过全量备份, 将数据恢复到今天凌晨的时刻 进入 MySQL命令行, 执行数据恢复文件: source /Users/hujing/dir/tmp/mysqldump_log/2020-09-04.sql...此时, 数据就已经恢复了. ---- 肤浅的记录一下, 虽然现在可以恢复数据了, 但是还有很多问题没有解决, 比如, 如何只恢复一张表的数据等等. 吃一堑长一智, 之后对数据库的操作要慎之又慎.

    5.6K50

    MySQL数据恢复

    今天分享一下binlog2sql,它是一款比较常用的数据恢复工具,可以通过它从MySQL binlog解析出你要的SQL,并根据不同选项,可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等...2.1 参数设置 MySQL server必须设置以下参数 [mysqld] server_id = 128 log_bin = /data/mysql/mysql3306/logs/mysql-bin...max_binlog_size = 512M binlog_format = row binlog_row_image = full # 默认值,可以不显式设置 2.2 创建恢复账号 因binlog2sql...3.1 生成恢复SQL 因知道大概误删除的时间,因此通过解析对应时间的binlog恢复出指定库表的数据,生成的结果是用于恢复的sql python binlog2sql.py --flashback...7 | vgcess | 29 | | 8 | hdgd | 0 | +----+--------+-------+ 8 rows in set (0.00 sec) 数据已恢复

    1K10

    MySQL实例恢复

    https://blog.csdn.net/robinson_0612/article/details/82588176 MySQL实例在异常宕机重启后,会自动启动实例恢复。...由于MySQL为多引擎数据库,所以需要说明的是MySQL实例恢复,实质上指的是对事务进行恢复,即对innodb恢复。...本文简要描述mysql实例恢复的步骤,并通过具体演示来感受mysql实例恢复的过程。 一、MySQL实例 MySQL实例就是mysqld后台进程以及多个线程再加上内存分配 ?...二、MySQL实例恢复的步骤 ? 三、InnoDB恢复过程 InnoDB崩溃恢复包括几个步骤: 1、应用重做日志 重做日志应用程序是第一步,在实例初始化期间执行,此时不接受任何连接。...在回滚操作完成之前,新连接可能会遇到与已恢复事务的锁定冲突。在大多数情况下,即使MySQL服务器在繁重的活动中被意外杀死,恢复过程自动发生,DBA不需要任何操作。

    2.3K10

    数据恢复:如何恢复Linux中意外删除的Oracle和MySQL数据库

    昨晚有朋友在微信群中求助讨论,误删除了一个MySQL的数据库,整个恢复过程和以下文章中提到的步骤完全相同,只要MySQL主进程还没有退出,从文件句柄中可以恢复文件最终挽回损失。...在 Linux 下大致重新演示一下恢复的过程,恢复的步骤与数据库版本没有太大关系,与操作系统的不同会有所不同。 1. 在数据库 open 的时候,直接删除 users 表空间中的数据文件。 2....进行数据文件 recover 完成数据文件恢复。...恢复的原理是,在 Linux 操作系统中,如果文件从操作系统级别被rm掉,之前打开该文件的进程仍然持有相应的文件句柄,所指向的文件仍然可以读写,并且该文件的文件描述符可以从 /proc 目录中获得。...但是要注意的是,此时如果关闭数据库,则此句柄会消失,那么除了扫描磁盘进行文件恢复之外就没有其它方法了,因此在数据库出现问题的时候,如果不确认情况的复杂程度,千万不要随便关闭数据库。

    5K60

    MySQL 备份恢复(一)

    /bin/mysqladmin –uroot–proot shutdown 备份数据目录: cp –r/opt/mysql newdirectory恢复:cp –rnewdirectory /opt...例如 40101,表明这些语句只有在 MySQL 版本号为 4.01.01 或者更高条件下才可以被执行。 ? 备份文件的最后几行 MySQL 使用 SET 语句恢复服务器系统变量原来的值。...恢复全库 恢复全库时可利用 mysql 这个客户端工具来进行,命令如下: mysql –uroot –proot </tmp/all_20190413.sql testdb 单库备份: mysqldump...--single-transaction -uroot -proottestdb >/tmp/testdb_20190413.sql 单库恢复: mysql –uroot –proot testdb...: mysql –uroot –proot testdb </tmp/testdb_t_20190413.sql 注意:单表恢复时,在导入符号前不需要写表名,只需要写库名即可。

    4.1K30

    MySQL 备份恢复(四)

    前面三篇已经介绍了 MySQL 备份相关的原理与方法,要是还没有来得及看的可以戳此查看『MySQL 备份恢复(三)』,那么今天就接着继续谈谈备份恢复相关内容之 Xtrabackup 的原理、安装与使用,...XtraBackup 备份恢复操作 1、创建备份账号 我们可以使用 MySQL 的 root 用户进行备份工作,也可以单独创建一个用于数据库备份的用户,过程如下。...6、Xtrabackup 增量备份的恢复 首先模拟故障将表 t 删除: use testdb; drop table t; select * from t; 首先在恢复的过程中将全备恢复,然后将两个增量备份恢复到全备中...,将前面新恢复的备份进行一次完全恢复,回滚那些还未提交的数据。...MySQL 备份相关的知识点应该是全部结束了,其他几篇可以查看历史记录。备份恢复的时候翻出来瞅瞅,大概率是有帮助的,有帮助我也很欣慰,好久没开过赞赏了,要是下面能出现你的头像,那我会更加欣慰的!

    2.6K20

    mysql备份与恢复

    为了正确恢复,该选项应该用于导出mysql数据库和依赖mysql数据库数据的任何时候。 20 --force在导出过程中忽略出现的SQL错误。..._$(date +%F).sql (2)恢复操作 a、删除student表(库必须要保留,空库都行) mysql -uroot -p'123456' -e "use mytest;drop table...student;" b、恢复数据 mysql -uroot -p'123456' mytest < /mnt/mytest_bak.sql c、查看数据 mysql -uroot -p'123456...(2)恢复操作 a、删除mytest库 mysql -uroot -p'123456' -e "drop database mytest;" b、恢复数据 (1)使用不带参数的导出文件导入(导入时不指定要恢复的数据库...(2)使用带-B参数的导出文件导入(导入时也不指定要恢复的数据库),成功 mysql -uroot -p'123456' < /mnt/mytest_bak_B.sql c、查看数据 mysql -

    3.1K41
    领券