使用filesort来满足ORDER BY (Use of filesort to Satisfy ORDER BY )

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: filesort ORDER BY (Use of filesort to Satisfy ORDER BY ) MySQL

介绍

如果一个查询的ORDER BY从句无法使用索引,那么MySQL会执行filesort操作来读取表的行数据并对这些行进行排序。在查询执行中filsort会使用额外的排序阶段。

为了让filesort操作得到内存,在MySQL8.0.12版本及以后,优化器会为filesort增量分配内存缓冲,知道系统变量设置的sort_buffer_size阈值,而不是在MySQL 8.0.12版本以前会直接根据sort_buffer_size的配置直接分配固定大小的内存缓冲。通过按需分配内存缓冲可以让用户将sort_buffer_size设置为一个很大的值来加速大的filesort排序,而不用担心小的filesort会浪费内存空间。(WIndows上依然会根据sort_buffer_size的配置分配固定大小的内存缓冲,因为Windows有一个较弱的多线程malloc函数。)

如果结果集太大超过了内存缓冲区大小,那么filesort操作会使用临时文件来存储数据。一些类型的查询可以完成通过in-memory的filesort操作来完成。例如,优化器可以在内存中高效的完成filesort而不用使用临时文件,下列是查询或子查询的ORDER BY形式:

SELECT ... FROM single_table ... ORDER BY non_index_column [DESC] LIMIT [M,]N;

下列查询通常是web应用程序,这些通常是从一个大的结果集中展示几行:

SELECT col1, ... FROM t1 ... ORDER BY name LIMIT 10;
SELECT col1, ... FROM t1 ... ORDER BY RAND() LIMIT 15;

原文链接

  1. https://dev.mysql.com/doc/refman/8.0/en/order-by-optimization.html#order-by-filesort
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
Web App开发 Oracle Java
Java项目启动时,隐藏的 oracle 驱动异常问题
报错信息:项目启动的时候,一直会报“registered driver with driverclassname=oracle.jdbc.driver.oracledriver was not found, trying direct instantiation.”。
4054 0
|
存储 物联网 数据安全/隐私保护
如何让AppleWatch自动锁定Mac?
我们都知道AppleWatch支持了解锁Mac的功能,如果您的 Mac(2013 年中或后续机型)安装了macOS Sierra(Apple Watch Series 1 和 Apple Watch Series 2)、macOS High Sierra 或更高版本(Apple Watch Series 3 或后续机型),那么当其从睡眠模式唤醒时,Apple Watch 会立即解锁您的 Mac。
1440 1
如何让AppleWatch自动锁定Mac?
|
缓存 Java Spring
Spring5源码(25)-Spring填充bean属性及应用生命周期接口
Spring5源码(25)-Spring填充bean属性及应用生命周期接口
97 0
|
Web App开发 JavaScript 前端开发
深入理解前端跨域方法和原理
深入理解前端跨域方法和原理
175 0
|
Linux 开发工具 数据安全/隐私保护
3.5、Linux:命令行git的使用
3.5、Linux:命令行git的使用
107 0
|
存储 索引
2.MySQL表的操作
2.MySQL表的操作
82 0
wustojc2001输出四位整数的各位数字
wustojc2001输出四位整数的各位数字
97 0
|
机器学习/深度学习 前端开发 IDE
「趣学前端」开耍CSS的3D转换,不会玩滑板但能画滑板
用技术实现梦想,用梦想打开创意之门。今天分享前端CSS中的3D转换知识点。
496 1
|
存储 自然语言处理 BI
SAP ABAP——数据类型(三)【TYPE-POOL和INCLUDE嵌套定义类型】
本文主要介绍一下SAP ABAP中的INCLUDE嵌套定义和类型组TYPE-POOL,类型组讲解主要包括了TYPE-POOL简介,TYPE-POOL的创建和使用以及常用TYPE-POOL的介绍
1332 0
SAP ABAP——数据类型(三)【TYPE-POOL和INCLUDE嵌套定义类型】