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 索引字段 就不会使用临时表,省去排序时间。

相关推荐
2401_88445415几秒前
Python测试代码如何实现自解释_使用pytest描述性命名规范
jvm·数据库·python
敖正炀1 分钟前
InnoDB 引擎深度:B+Tree、页与行格式
mysql
.柒宇.3 分钟前
Redis哨兵模式搭建
数据库·redis·哨兵
敖正炀3 分钟前
事务与 MVCC:Undo Log、ReadView 与隔离级别
mysql
dinglu1030DL9 分钟前
Go语言怎么格式化时间_Go语言time.Format教程【详解】
jvm·数据库·python
老码观察11 分钟前
K8s集群断电后MySQL恢复实录:从InnoDB崩溃到数据完整迁移
mysql·adb·kubernetes
敖正炀12 分钟前
MySQL 架构全景与特性总览
mysql
环流_12 分钟前
Redis单线程但效率高且快
数据库·redis·缓存
m0_6245785913 分钟前
SQL数据分析如何剔除极端异常值_配合窗口函数检测偏离度
jvm·数据库·python
tkevinjd14 分钟前
MySQL1:分层架构
数据库·mysql·缓存