Mysql group by

临时表与内存表

内存表是 Memory 引擎表,表的数据行都在内存。

临时表可以使用各种引擎。

临时表是线程私有表,其他线程不可见,不需考虑重名问题。

session 结束时临时表会被自动删除。

如果 Binlog_format = row,则临时表语句不进入 binlog,不参与主从同步。

普通表的 table_def_key = 库名 + 表名。

临时表的 table_def_key = 库名 + 表名 + mysql实例 id + 线程 id。

内部临时表

Mysql 的一些操作需要临时存储数据,会用到临时表。比如 union 去重求交集。它将两个子查询的结果放入临时表,去重之后返回客户端。如果是 union all 求并集,就不需要临时表。

group by 分组也用到临时表。group by 分组默认排序,如果不需要排序,可以 sql 语句末尾添加 order by null

group by 无法判断分组字段是否有序,因此用到临时表。而索引是有序的,如果 group by 索引字段 就不会使用临时表,省去排序时间。

相关推荐
Arva .1 小时前
深分页与游标
数据库·oracle
idolao2 小时前
MySQL 5.7 安装教程:详细步骤+自定义安装+命令行客户端配置(Windows版)
数据库·windows·mysql
20年编程老鸟java+ai全栈2 小时前
mysql、pg、oracel数据库迁移避坑指南
数据库·mysql
Rsun045513 小时前
Redis中实现访问量计数
数据库·redis·缓存
西柚0013 小时前
Ubuntu22.04.5 + Docker + MySQL 5.7
mysql·docker·容器
天空属于哈夫克33 小时前
自动化素材中枢:实现云端文件与外部群消息的异步同步方案
数据库·oracle
Navicat中国3 小时前
Navicat Premium Lite 正式登录鸿蒙应用市场
数据库·华为·harmonyos·navicat
Yvonne爱编码3 小时前
数据库---Day 1 数据库基础
数据库·mysql·oracle
Ricky_Theseus4 小时前
数据库关系代数 - 连接操作
linux·数据库·算法
FL4m3Y4n4 小时前
MySQL索引原理与SQL优化
android·sql·mysql