首页 > 数据库 >mysql的单路排序和双路排序

mysql的单路排序和双路排序

时间:2022-09-19 20:01:36浏览次数:81  
标签:双路 排好序 单路 内存 排序 加载

单路排序:

查询数据时,将所有要查询的数据全部加载到内存中进行排序。

双路排序:

查询数据时,只是将排序字段和记录ID加载到内存中,排好序后在根据id回表加载数据。

单路排序占用内存大,但效率高,因为排好序后就已经是可以返回的结果了。

双路排序占用内存少,但效率要比单路排序低,因为排好序后还要回表加载数据。

如下图中的查询:

 

 采用单路排序时,因为查询的是所有字段,会将所有字段加载到内存中,然后按照sal排序。

采用双路排序就是将主键(EMPNO)和SAL加载到内存中,按照SAL字段排好序,在根据主键去回表加载数据。

 

mysql内部是通过比较max_length_for_sort_data(默认1024字节)这个系统变量跟需要排序的字段长度比较来判断采用哪种排序的。

如果需要排序的字段总长度小于max_length_for_sort_data,则采用单路排序。

如果需要排序的字段总长度大于max_length_for_sort_data,则采用双路排序。

标签:双路,排好序,单路,内存,排序,加载
From: https://www.cnblogs.com/yashuadiula/p/16672458.html

相关文章

  • 列表排序
    1.普通的排序Arrays.sort(nums);//数组排序Collections.sort(list);//链表排序2.按照数字出现的频次升序排序,如果频次相同按照数值本身大小降序排序class......
  • 内部排序
    排序分为内部排序和外部排序,区别在于存储数据的位置。内部排序分别有五类:插入、选择、交换、归并和分配排序。排序过程有两个操作:一是比较关键字大小,二是记录的移动或改......
  • 0-4 测试面试题_16合并两个排序数组_17tcp和udp_18单元集成系统验收回归_19测试和开发
    面试题(除个别外)及部分解析答案来自牛客网https://www.nowcoder.com/exam/interview/以下所述内容并不是百分之百正确,仅供参考。16手写代码:合并两个排序数组Merge1......
  • js数组sort()方法按指定顺序排序
    一、sort介绍数组的sort()方法可以把数组排序,不传参数的默认按字典排序sort()方法还接受一个回调函数,按回调函数内代码逻辑排序该函数要比较两个值,然后返回一个用于说明这......
  • DataTable中数据记录的排序,检索,合并,分页,统计(整理)(转)
    一、排序1获取DataTable的默认视图2对视图设置排序表达式3用排序后的视图导出的新DataTable替换就DataTable(Asc升序可省略,多列排序用","隔开)DataViewdv=dt.Default......
  • 1636. 按照频率将数组升序排序【模拟】
    题目给你一个整数数组nums,请你将数组按照每个值的频率升序排序。如果有多个值的频率相同,请你按照数值本身将它们降序排序。请你返回排序后的数组。难度:简单提示:......
  • 034每个进程占用内存排序
    一、  #ps-aux|head-n2  USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND  root10.00.019633213704?......
  • [算法]循环排序
    这类题的特点是给定的数值和下表rank是类似的,其中可能会有一些差异.在设计算法的时候,可以将value值映射到rank上去.其中,选择大于的值最好比rank的最大值+1,这样会避......
  • 1636. 按照频率将数组升序排序
    1636.按照频率将数组升序排序给你一个整数数组 nums ,请你将数组按照每个值的频率升序排序。如果有多个值的频率相同,请你按照数值本身将它们降序排序。 请你返......
  • 选择排序
    有五个数12,-1,66,5,7,选出最大的的数的下标,把最大的数与最后的位置交换,5个数找4次最大的数即可代码如下  1#include<stdio.h>2#include<math.h>3intmain()......