2022年7月27日

MySQL Order By 排序的两种策略,Order By排序的时候,会结合select字段的个数,已经字段占用的空间做评估。如果select字段占用的空间比较少,MySQL会将全部字段查询出来,统一进行排序。

如果数据量比较小,可以放进内存中进行排序。如果数据量比较大,就需要借住临时文件进行排序。类似于,MySQL在数据块上查找数据使用快速排序一样,MySQL排序使用归并算法,会生成多个临时文件进行排序,最后做合并返回。

如果select的字段比较多,一行占用的空间比较大,MySQL只会将进行排序的字段和主键ID取出来放到内存或者临时文件进行排序。这样排序的结果就是一个中间结果,MySQL还需要回表查询一下select的其他字段。

我理解MySQL判断数据大小一定是根据表结构来评估的,实际上表结构的字段声明和实际存储的大小是有差异的。但在程序设计上,肯定得通过固定的声明来控制。

根据MySQL这两种处理思路,归并排序其实也是非常重要的一环。Redis也有很多这样的处理,比如根据数据的大小和数量进行的特殊编码,ziplist之类的。

我在工作中有可以使用到这种处理思路的地方吗,根据数据的大小来设计不同的处理过程。其实难点在于如何统计大小上?如果遇到大key的存储,进行数据分片拆分,如果没有,直接存储。

谨上,

i-neojos

Order By 排序相关推荐

  1. SQL基础学习总结:5(HAVING子句的使用ORDER BY排序子句的使用)

    为聚合结果指定条件 HAVING子句 HAVING子句可以让我们筛选分组之后的各种数据,其语法结构如下: SELECT <列名1>,<列名2>,<列名3> FROM ...

  2. mysql key value 排序_MySQL利用索引优化ORDER BY排序语句的方法

    创建表&创建索引 create table tbl1 ( id int unique, sname varchar(50), index tbl1_index_sname(sname desc ...

  3. mysql单列去重复group by分组取每组前几条记录加order by排序

    <div class="post"><h1 class="postTitle"><a id="cb_post_title ...

  4. Order By 排序条件中带参数的写法(Oracle数据库、MyBatis)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. sortWay 是参数. 当sortWay  为 llpx 就 ORDER BY FORMAT AS ...

  5. MySQL5.6优化了Order by排序limit

    表结构(1000万行记录): mysql> show create table sbtest\G; *************************** 1. row ************ ...

  6. 使用order by排序判断返回结果的列数,order by排序判断字段数原理详解

    「作者主页」:士别三日wyx order by排序猜解列数原理详解 一.order by的两种使用方式 1)按照字段名排序 2)按照索引排序 二.order by怎么判断字段数? 1)正常的排序 3) ...

  7. mybatis多字段排序_解决mybatis中order by排序无效问题

    1.#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #{user_id},如果传入的值是111,那么解析成sql时的值为order by "111&qu ...

  8. 数据库多维度order by 排序分析

    数据库多维度order by 排序分析 案例 开发一个类似与咸鱼app的产品,其中有个需求是在登录用户打开app时,首页展示其他人发布的商品列表, 商品信息中包含商品信息.发布时间.发货地点,取货方式 ...

  9. alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组)

    alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组) 1. SQL语句 1.1 sql语言类型 sql是一门独立的 ...

最新文章

  1. ECS 支持 IPv6 啦,快来尝鲜吧~
  2. lodoop打印控件详解
  3. liunx学习笔记1
  4. oracel 中序列
  5. POJ 3687 Labeling Balls
  6. miui11未升级android版本,MIUI 11稳定版正式推送,升级前你需要了解
  7. java声明arraylist,在java构造函数中声明ArrayList
  8. html中opacity的使用
  9. Python - 批量修改文件夹名称
  10. 【C语言】统计出文章的英文大写字母、小写字母、数字、空格以及其他字符的个数,共有3行文字,每行有80个字符
  11. STM32f746gdiscovery 触摸屏 FT5336 驱动
  12. RBM(受限玻尔兹曼机)和深层信念网络(Deep Brief Network)
  13. [js]调用google,51ditu和mapbar的地图API
  14. 繁体字转换为中文python
  15. 黑帽SEO网站优化常用的15种技巧
  16. 【论文笔记(2)】图卷积网络介绍 Understanding Convolutions on Graphs
  17. linux执行scp命令出错
  18. 电脑能正常上网百度,但是网络显示无Internet
  19. 儿童全脑九大能力,3-6岁的家长都应该知道
  20. 无图言屌?YYImage 设计思路,实现细节剖析

热门文章

  1. Matlab 基于局部三角网的曲面重建
  2. 图像变形算法:实现Photoshop液化工具箱中向前变形工具
  3. TI DSP BootLoader技术要点概述
  4. “我怎么就被一张照片出卖了?”
  5. 关于C++的数据模型:LP32、ILP32、LLP64、LP64
  6. 面稀土,战码家(二)
  7. java后端返回二进制图片 前端进行展示 详解
  8. 定制材料 Pd基聚多巴胺包裹碳纳米管/Fe或Cr单原子链填充Cu纳米管/Fe@CuNT和Cr@CuNT复合结构/氧化钼包裹碳纳米管纳米复合纤维
  9. [前端面试经]百度和好未来的面试官把我榨干了
  10. VUE学习(六) 高德地图常用功能总结