每日一博 | 算法的艺术:MySQL order by 对各种排序算法的巧用
在 【精华】洞悉MySQL底层架构:游走在缓冲与磁盘之间这篇文章中,我们介绍了索引树的页面怎么加载到内存中,如何淘汰,等底层细节。这篇文章我们从比较宏观的角度来看MySQL中关键字的原理。本文,我们主要探索order by语句的底层原理。阅读完本文,您将了解到: order by语句有哪些排序模式,以及每种排序模式的优缺点; order by语句会用到哪些排序算法,在什么场景下会选择哪种排序算法; 如何查看和分析sql的order by优化手段(执行计划 + OPTIMIZER_TRACE日志); 如何优化order by语句的执行效率?(思想:减小行大小,尽量走索引,能够走覆盖索引最佳,可适当增加sort buffer内存大小) 这里我们从数据结构的维度来看数据和索引,也就是都当成B+树的的,我们需要数据的时候再从存储引擎的B+树中读取。 以下是我们本文作为演示例子的表,假设我们有如下表: 索引如下: 对应的idx_d索引结构如下(这里我们做了一些夸张的手法,让一个页数据变小,为了展现在索引树中的查找流程): 1、如何跟踪执行优化 为了方便分析sql的执行流程,我们可以在当前sess...




