首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

聊聊Order By

我们日常工作中写 SQL 语句,经常会使用 order by 对记录进行排序。如果 order by 能够使用索引中记录已经排好序的特性,就不需要再借助内存或磁盘空间进行排序,这无疑是效率最高的。...官方根据单元测试发现,使用优先队列 + 排序缓冲区进行排序需要的时间是只使用排序缓冲区的 3 倍。...两类排序 MySQL order by 的实现过程,可能会进行两类排序:内部排序、外部排序。...源码注释是这样说的,归并排序比快速排序更快,但是归并排序申请临时缓冲区需要额外的时间成本,所以在排序记录数量很少的时候,归并排序并没有多大优势,归并排序比快速排序快的临界点是排序记录数量在 10 ~ 40...前面两种排序模式,以空间换时间,虽然不需要两次访问存储引擎,让文件排序逻辑整体上更简单,但是记录数量多起来之后,需要磁盘文件存储排序结果,而磁盘 IO 会导致排序效率低下。

75720

order by的工作原理

今天分享的内容关于order by的两种排序模式。全字段排序和rowid排序。...看下面这个SQL: mysql> explain select city,name,age from t where city='西安' order by name limit 1000 ; +---...01 全字段排序过程 SQL贴在这里: select city,name,age from t where city='西安' order by name limit 1000 ; 先来看全字段排序过程...其中name是我们order by的目标列,id是主键 2、根据city字段在二级索引上过滤出来记录的主键id值,然后回表聚集索引查询到对应的name和id值,并将name和id这2个字段放入sort_buffer...3、如果order by的字段上本身有索引,则数据记录本身有序,就不会使用sort buffer,之所以使用临时的磁盘文件来排序,是因为数据记录都是无序的。

71010

MySQL——优化ORDER BY语句

MySQL——优化ORDER BY语句 本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的老少爷们可以先看一下我之前写过的索引相关文章。现在让我们开始吧。...ORDER BY优化的核心原则 尽量减少额外的排序,通过索引直接返回有序数据。...ORDER BY优化 1.查询的字段,应该只包含此次查询使用的索引字段和主键,其余的非索引字段和索引字段作为查询字段则不会使用索引。...3.升降序不一致,无法利用索引排序 ORDER BY排序字段要么全部正序排序,要么全部倒序排序,否则无法利用索引排序。...BY使用相同的索引,并且ORDER BY的顺序和索引顺序相同,并且ORDER BY的字段都是升序或者降序。

1.1K21
领券