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

相关推荐
Hoffer_6 小时前
MySQL 强制索引:USE/FORCE INDEX 用法与避坑
后端·mysql
Hoffer_6 小时前
MySQL 索引核心操作:CREATE/DROP/SHOW
后端·mysql
随风飘的云1 天前
MySQL的慢查询优化解决思路
数据库
IvorySQL1 天前
PostgreSQL 技术日报 (3月7日)|生态更新与内核性能讨论
数据库·postgresql·开源
赵渝强老师1 天前
【赵渝强老师】金仓数据库的数据文件
数据库·国产数据库·kingbase·金仓数据库
随逸1771 天前
《Milvus向量数据库从入门到实战,手把手搭建语义检索系统》
数据库
神秘的猪头1 天前
🚀 React 开发者进阶:RAG 核心——手把手带你玩转 Milvus 向量数据库
数据库·后端·llm
0xDevNull2 天前
MySQL索引进阶用法
后端·mysql
0xDevNull2 天前
MySQL索引用法
mysql
IvorySQL2 天前
PostgreSQL 技术日报 (3月6日)|为什么 Ctrl-C 在 psql 里让人不安?
数据库·postgresql·开源