MySQL排序大揭秘:全字段与rowid的比较与应用

2023年 7月 24日 52.4k 0

本文为《MySQL归纳学习》专栏的第三篇文章,同时也是关于《MySQL查询》知识点的第三篇文章。

往期回顾:

MySQL玩转指南:探秘Server层组件及权限校验实践

MySQL战记:Count( *)实现之谜与计数策略的选择

在MySQL世界中,排序是一个常见而重要的操作。但你是否了解MySQL内部排序的神奇算法?本文将带你深入了解order by语句的几种算法流程,重点详解全字段排序和rowid排序,并对它们的适用场景进行对比分析。

首先来看一下这张思维导图,对本文内容有个直观的认识。

img

接下来进入正文。

假设有如下表结构:

CREATE TABLE t (
  id int(11) NOT NULL,
  city varchar(16) NOT NULL,
  name varchar(16) NOT NULL,
  age int(11) NOT NULL,
  addr varchar(128) DEFAULT NULL,
  PRIMARY KEY (id),
  KEY city (city)
) ENGINE=InnoDB;

使用存储过程来初始化数据:

DELIMITER ;;
CREATE PROCEDURE init_t()
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE j INT DEFAULT 0;
DECLARE k INT DEFAULT 0;
DECLARE city_list VARCHAR(200) DEFAULT '杭州,上海,武汉,北京';
DECLARE name_len INT DEFAULT 0;
DECLARE city VARCHAR(16);
DECLARE namef VARCHAR(16);
DECLARE age INT;
DECLARE addr VARCHAR(128);

SET name_len = LENGTH('abcdefghijklmnopqrstuvwxyz');

-- 第一层循环:按照city遍历
loop_city: LOOP
SET i = i + 1;
SET city = SUBSTRING_INDEX(SUBSTRING_INDEX(city_list, ',', i), ',', -1); -- 获取城市

-- 第二层循环:生成数据
while(k

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论