返回顶部
首页 > 资讯 > 数据库 >mysql中filesort指的是什么
  • 366
分享到

mysql中filesort指的是什么

mysqlfilesort 2022-11-30 23:11:38 366人浏览 安东尼
摘要

本篇内容介绍了“Mysql中filesort指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

本篇内容介绍了“Mysql中filesort指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

mysql中,filesort是指文件排序,是通过相应的排序算法,将取得的数据在内存中进行排序。filesort分两种:1、双路排序,是首先根据相应的条件取出相应的排序字段和可以直接定位行数据的行指针信息,然后在sort buffer 中进行排序;2、单路排序,是一次性取出满足条件行的所有字段,然后在sort buffer中进行排序。

在Mysql中的ORDER BY有两种排序实现方式:

1. 利用有序索引获取有序数据
2. 文件排序(filesort)

在explain中分析查询的时候,利用有序索引获取有序数据显示Using index ,文件排序显示 Using filesort。

只有当ORDER BY中所有的列必须包含在相同的索引,并且索引的顺序和order by子句中的顺序完全一致,并且所有列的排序方向(升序或者降序)一样才有,(混合使用ASC模式和DESC模式则不使用索引)

where语句 与 order by 语句组合满足最左前缀

mysql中filesort指的是什么

在其他的情况下 使用 文件排序如下:

      1) where语句与order by语句,使用了不同的索引

  2) 检查的行数过多,且没有使用覆盖索引

  3) ORDER BY中的列不包含在相同的索引,也就是使用了不同的索引

  4) 对索引列同时使用了ASC和DESC

  5) where语句或者ORDER BY语句中索引列使用了表达式,包括函数表达式

  6) where 语句与ORDER BY语句组合满足最左前缀,但where语句中查找的是范围。

filesort

这个 filesort 并不是说通过磁盘文件进行排序,而只是告诉我们进行了一个排序操作。即在MySQL Query Optimizer 所给出的执行计划(通过 EXPLAIN 命令查看)中被称为文件排序(filesort)

  文件排序是通过相应的排序算法,将取得的数据在内存中进行排序: MySQL需要将数据在内存中进行排序,所使用的内存区域也就是我们通过sort_buffer_size 系统变量所设置的排序区。这个排序区是每个Thread 独享的,所以说可能在同一时刻在MySQL 中可能存在多个 sort buffer 内存区域。

filesort分两种

  • 双路排序:是首先根据相应的条件取出相应的排序字段和可以直接定位行数据的行指针信息,然后在sort buffer 中进行排序。排序后再吧查询字段依照行指针取出,共执行两次磁盘io

  • 单路排序:是一次性取出满足条件行的所有字段,然后在sort buffer中进行排序。 执行一次磁盘io。

MySQL主要通过比较我们所设定的系统参数 max_length_for_sort_data的大小和Query 语句所取出的字段类型大小总和来判定需要使用哪一种排序算法。如果 max_length_for_sort_data更大,则使用第二种优化后的算法,反之使用第一种算法。所以如果希望 ORDER BY 操作的效率尽可能的高,一定要主义max_length_for_sort_data 参数的设置。曾经就有同事的数据库出现大量的排序等待,造成系统负载很高,而且响应时间变得很长,最后查出正是因为MySQL 使用了传统的第一种排序算法而导致,在加大了max_length_for_sort_data 参数值之后,系统负载马上得到了大的缓解,响应也快了很多。

如果order by的子句只引用了联接中的第一个表,MySQL会先对第一个表进行排序,然后进行联接。也就是expain中的Extra的Using Filesort.否则MySQL先把结果保存到临时表(Temporary Table),然后再对临时表的数据进行排序.此时expain中的Extra的显示Using temporary Using Filesort.

“mysql中filesort指的是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: mysql中filesort指的是什么

本文链接: https://lsjlt.com/news/173777.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mysql中filesort指的是什么
    本篇内容介绍了“mysql中filesort指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-11-30
    mysql filesort
  • mysql中的filesort问题怎么解决
    在MySQL中,filesort是指MySQL使用文件进行排序操作。通常情况下,filesort是由于MySQL无法使用索引进行排序...
    99+
    2024-05-22
    mysql
  • MySQL中order指的是什么
    这篇文章将为大家详细讲解有关MySQL中order指的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql是一种关系数据库,它有许多关键字供使用者用来操作数据,...
    99+
    2024-04-02
  • mysql中acid指的是什么
    这篇文章主要介绍了mysql中acid指的是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、事务的基本要素(ACID)  1、原子性(...
    99+
    2024-04-02
  • mysql中SQL指的是什么
    这篇文章主要介绍了mysql中SQL指的是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、SQL是结构化查询语言。DML  数据操纵语言 ...
    99+
    2023-06-15
  • mysql中signed指的是什么
    在MySQL中,signed是一种数据类型修饰符,用于指定整数数据类型的符号属性。当一个整数列被声明为signed时,它可以存储正数...
    99+
    2024-04-09
    mysql
  • mysql中gtid指的是什么
    在MySQL中,GTID(Global Transaction Identifier)是一种全局事务标识符。它是由MySQL服务器自...
    99+
    2024-04-09
    mysql
  • mysql中的事务是指什么
    mysql中的事务是指什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。事务就是一组原子性的 SQL 查询,或者说一个独立的工...
    99+
    2024-04-02
  • MySQL中索引指的是什么
    这篇文章将为大家详细讲解有关MySQL中索引指的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。索引是什么?一张表有 500 万条数据,在没有索引的 name 字段上...
    99+
    2024-04-02
  • mysql中视图指的是什么
    这篇文章给大家分享的是有关mysql中视图指的是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 mysql的视图是mysql数据库中存放数据的一个...
    99+
    2024-04-02
  • MySQL中脑裂指的是什么
    本文小编为大家详细介绍“MySQL中脑裂指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL中脑裂指的是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2024-04-02
  • nchar在mysql中指的是什么
    这篇文章主要介绍“nchar在mysql中指的是什么”,在日常操作中,相信很多人在nchar在mysql中指的是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”nchar在...
    99+
    2023-05-25
    mysql nchar
  • mysql中is null指的是什么
    这篇文章主要介绍“mysql中is null指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql中is null指的是什么”文章能帮助大家解决问题。 ...
    99+
    2023-05-25
    mysql is null
  • mysql指的是什么
    这篇文章主要介绍了mysql指的是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP MySQL 简介:通过 PHP,您可以连接和操作数据库。 MySQL 是跟 PHP...
    99+
    2023-06-15
  • MYSQL中的int(11)指的是什么
    小编给大家分享一下MYSQL中的int(11)指的是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!            &...
    99+
    2024-04-02
  • connectors在mysql中是指什么
    connectors在mysql中是指什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Connectors指的是不同语言中与SQL的交互...
    99+
    2024-04-02
  • mysql中外链接指的是什么
    小编给大家分享一下mysql中外链接指的是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql中外连接是指使用比较运算符对两个表中的数据进行比较,连接结果不仅包含符合连接条件的行,同时...
    99+
    2024-04-02
  • mysql中临时表指的是什么
    这篇文章主要介绍了mysql中临时表指的是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。临时表是MySQL用于存储一些中间结果集的表,临时表...
    99+
    2024-04-02
  • mysql中shell指的是什么意思
    这篇文章给大家分享的是有关mysql中shell指的是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。MySQL Shell是在官方版本5.7.12推出,工具的初衷本身都是...
    99+
    2024-04-02
  • MySQL中慢查询指的是什么
    这篇文章主要介绍MySQL中慢查询指的是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!分析MySQL语句查询性能的方法除了使用EXPLAIN输出执行计划,还可以让MySQL记录下...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作