
归并排序
ORDERBY用filesort不一定慢,关键看索引是否覆盖排序与查询字段;sort_buffer_size并非越大越好,需结合Sort_merge_passes调整至2M–4M;ORDERBY+LI...
SQL聚合底层主要有HashAggregate和Sort-Aggregate两种策略:前者基于哈希表,适合高基数、无序输入,内存充足时高效但输出无序;后者先排序再扫描,适合低基数、已排序输入或需有序输...
查询执行器是SQL语句真正执行的环节,负责按执行计划调用存储引擎接口获取数据、校验权限、逐节点过滤连接聚合,并返回结果集,不解析SQL、不选索引、不缓存、不写binlog。
本文介绍一种高效、内存友好的方法,用于合并两个按时间排序的文本日志文件,在存在末尾-开头重叠时自动去重,同时严格保持原有时间顺序,避免全量读取或重复排序。
冒泡排序核心是外层n-1轮遍历、内层每轮比较前n-i-1对相邻元素并交换,用std::swap和vector模板实现更安全;避免裸数组因长度退化导致越界,且不可用于生产环境。
TOPN排序用堆实现截断,时间复杂度O(logN),可借索引提前终止;全排序需全局有序,小数据用快排/归并,大数据用外部归并,强调稳定性与I/O优化。
归并排序核心是分治且非原地排序,需额外空间合并子数组;递归版有栈溢出风险,应设终止条件并小数组转插入排序;迭代版更安全但边界易错;泛化需适配迭代器与移动语义。
MySQL的ORDERBY实际按索引扫描或Usingfilesort分阶段执行:有匹配索引时直接有序输出,否则用sort_buffer排序;多字段逐级比较,NULL默认最小,禁用序号/别名排序,LIM...
桶排序适合数据均匀分布在有限整数区间(如[0,1000))且数量级适中(如1e5)的场景;不适用浮点数未离散化、负数未偏移、值域极大样本极少等情况。
MySQL索引合并是优化器主动选择多个二级索引分别扫描再合并主键结果的访问方法,旨在减少回表次数和随机IO;适用于多独立条件命中不同二级索引的场景,包括intersect、union和sort_uni...