MySQL8新特性:降序索引详解

6.1 MySQL 8.0新特性详解:窗口函数、CTE和更多 MySQL 8.0新特性详解摘要(149字) MySQL 8.0引入了多项重要特性:1)窗口函数支持复杂分析查询(如排名、移动平均),简化了传统需要自连接的场景;2)公用表表达式(CTE)提升SQL可读性,递归CTE支持层级数据查询;3)索引增强包括降序索引优化排序查询,不可见索引便于测试索引效果。这些特性显著提升开发效率和查询性能,如窗口函数可替代复杂子查询实现部门销售排名,递归CTE能高效处理组织架构层级关系。新特性使MySQL在分析型查询和复杂数据处理方面更具竞争力。 阅读详情

原文:https://www.jb51.net/article/143464.htm

前言

MySQL 8.0终于支持降序索引了。其实,从语法上,MySQL 4就支持了,但正如官方文档所言,"they are parsed but ignored",实际创建的还是升序索引。

无图无真相,同一个建表语句,看看MySQL 5.7和8.0的区别。

1

create table slowtech.t1(c1 int,c2 int,index idx_c1_c2(c1,c2 desc));

MySQL 5.7

1

2

3

4

5

6

7

8

9

mysql> show create table slowtech.t1\G

*************************** 1. row ***************************

 Table: t1

Create Table: CREATE TABLE `t1` (

 `c1` int(11) DEFAULT NULL,

 `c2` int(11) DEFAULT NULL,

 KEY `idx_c1_c2` (`c1`,`c2`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

row in set (0.00 sec)

虽然c2列指定了desc,但在实际的建表语句中还是将其忽略了。再来看看MySQL 8.0的结果。 

1

2

3

4

5

6

7

8

9

mysql> show create table slowtech.t1\G

*************************** 1. row ***************************

 Table: t1

Create Table: CREATE TABLE `t1` (

 `c1` int(11) DEFAULT NULL,

 `c2` int(11) DEFAULT NULL,

 KEY `idx_c1_c2` (`c1`,`c2` DESC)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

row in set (0.00 sec)

c2列还是保留了desc子句。

降序索引的意义

如果一个查询,需要对多个列进行排序,且顺序要求不一致。在这种场景下,要想避免数据库额外的排序-“filesort”,只能使用降序索引。还是上面这张表,来看看有降序索引和没有的区别。

MySQL 5.7

1

2

3

4

5

6

7

mysql> explain select * from slowtech.t1 order by c1,c2 desc;

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-----------------------------+

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra   |

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-----------------------------+

| 1 | SIMPLE | t1 | NULL | index | NULL  | idx_c1_c2 | 10 | NULL | 1 | 100.00 | Using index; Using filesort |

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-----------------------------+

row in set, 1 warning (0.00 sec)

MySQL 8.0

1

2

3

4

5

6

7

mysql> explain select * from slowtech.t1 order by c1,c2 desc;

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-------------+

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-------------+

| 1 | SIMPLE | t1 | NULL | index | NULL  | idx_c1_c2 | 10 | NULL | 1 | 100.00 | Using index |

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-------------+

row in set, 1 warning (0.00 sec)

两者的对比可以看出,MySQL 8.0因为降序索引的存在,避免了“filesort”。

这其实是降序索引的主要应用场景。如果只对单个列进行排序,降序索引的意义不是太大,无论是升序还是降序,升序索引完全可以应付。还是同样的表,看看下面的查询。

MySQL 5.7

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

mysql> explain select * from slowtech.t1 order by c1;

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-------------+

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-------------+

| 1 | SIMPLE | t1 | NULL | index | NULL  | idx_c1_c2 | 10 | NULL | 1 | 100.00 | Using index |

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-------------+

row in set, 1 warning (0.00 sec)

 

mysql> explain select * from slowtech.t1 order by c1 desc;

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-------------+

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-------------+

| 1 | SIMPLE | t1 | NULL | index | NULL  | idx_c1_c2 | 10 | NULL | 1 | 100.00 | Using index |

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-------------+

row in set, 1 warning (0.00 sec)

虽然c1是升序索引,但在第二个查询中,对其进行降序排列时,并没有进行额外的排序,使用的还是索引。在这里,大家容易产生误区,以为升序索引就不能用于降序排列,实际上,对于索引,MySQL不仅支持正向扫描,还可以反向扫描。反向扫描的性能同样不差。以下是官方对于降序索引的压测结果,测试表也只有两列(a,b),建了一个联合索引(a desc,b asc),感兴趣的童鞋可以看看,http://mysqlserverteam.com/mysql-8-0-labs-descending-indexes-in-mysql/

 

而在8.0中,对于反向扫描,有一个专门的词进行描述“Backward index scan”。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

mysql> explain select * from slowtech.t1 order by c1;

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-------------+

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-------------+

| 1 | SIMPLE | t1 | NULL | index | NULL  | idx_c1_c2 | 10 | NULL | 1 | 100.00 | Using index |

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+-------------+

row in set, 1 warning (0.00 sec)

 

mysql> explain select * from slowtech.t1 order by c1 desc;

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+----------------------------------+

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra    |

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+----------------------------------+

| 1 | SIMPLE | t1 | NULL | index | NULL  | idx_c1_c2 | 10 | NULL | 1 | 100.00 | Backward index scan; Using index |

+----+-------------+-------+------------+-------+---------------+-----------+---------+------+------+----------+----------------------------------+

row in set, 1 warning (0.00 sec)

终于不再对group by进行隐式排序

由于降序索引的引入,MySQL 8.0再也不会对group by操作进行隐式排序。

下面看看MySQL 5.7和8中的测试情况    

1

2

3

4

create table slowtech.t1(id int);

insert into slowtech.t1 values(2);

insert into slowtech.t1 values(3);

insert into slowtech.t1 values(1);

MySQL 5.7

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

mysql> select * from slowtech.t1 group by id;

+------+

| id |

+------+

| 1 |

| 2 |

| 3 |

+------+

rows in set (0.00 sec)

 

mysql> explain select * from slowtech.t1 group by id;

+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+---------------------------------+

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra       |

+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+---------------------------------+

| 1 | SIMPLE  | t1 | NULL  | ALL | NULL   | NULL | NULL | NULL | 3 | 100.00 | Using temporary; Using filesort |

+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+---------------------------------+

row in set, 1 warning (0.00 sec)

“Using filesort”,代表查询中有排序操作,从结果上看,id列确实也是升序输出。

MySQL 8.0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

mysql> select * from slowtech.t1 group by id;

+------+

| id |

+------+

| 2 |

| 3 |

| 1 |

+------+

rows in set (0.00 sec)

 

mysql> explain select * from slowtech.t1 group by id;

+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-----------------+

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra   |

+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-----------------+

| 1 | SIMPLE  | t1 | NULL  | ALL | NULL   | NULL | NULL | NULL | 3 | 100.00 | Using temporary |

+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-----------------+

row in set, 1 warning (0.01 sec)

不仅结果没有升序输出,执行计划中也没有“Using filesort”。

可见,MySQL 8.0对于group by操作确实不再进行隐式排序。

从5.7升级到8.0,依赖group by隐式排序的业务可要小心咯。

参考文档

http://mysqlserverteam.com/mysql-8-0-labs-descending-indexes-in-mysql/

MySQL索引失效场景分析与优化实践 数据库索引是提升查询性能的关键数据结构,其底层通常采用B+树实现。索引通过有序存储和快速定位机制,将查询复杂度从O(n)降至O(log n)。在MySQL等关系型数据库中,索引失效会导致全表扫描,严重影响系统性能。常见的索引失效场景包括隐式类型转换、函数操作、模糊查询不当、违反最左前缀原则以及OR条件使用错误等。通过EXPLAIN分析执行计划、监控索引使用情况,结合MySQL 8.0+的索引跳跃扫描、降序索引等新特性,可以有效优化查询性能。这些技术在电商订单查询、社交Feed流等高频访问场景中尤为重要,合理 阅读详情

相关推荐

MySQL索引原理、优化与高频面试题解析

数据库索引是提升查询性能的核心技术,其本质是通过特定的数据结构(如B+树)快速定位数据。B+树索引因其多路平衡特性,在磁盘IO密集型场景下表现优异,支持高效的范围查询和排序操作。在实际工程中,合理的索引设计能显著降低查询延迟,特别是在处理百万级数据表时效果更为明显。常见的优化手段包括遵循最左前缀原则、计算索引选择性、避免索引失效陷阱等。随着MySQL 8.0的普及,函数索引、不可见索引等新特性为复杂查询场景提供了更多优化可能。本文结合2026年最新面试趋势,深入解析索引底层原理,并给出电商、社交平台等典型业

weixin_30512965的博客 219

MySQL索引

索引是一个单独的、存储在磁盘上的数据库结构,它们包含着对数据表里所有记录的引用指针。使用索引用于快速找出在某个或多个列中有一特定值的行,所有MySQL列类型都可以被索引,对相关列使用索引是提高查询操作速度的最佳途径。MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。接下来就来了解一下索引的使用吧!

qq_56370103的博客 3825

MySQL8.0中的降序索引

前言 相信大家都知道,索引是有序的;不过,在MySQL之前版本中,只支持升序索引,不支持降序索引,这会带来一些问题;在最新的MySQL 8.0版本中,终于引入了降序索引,接下来我们就来看一看。 降序索引 单列索引 (1)查看测试表结构 mysql> show create table sbtest1\G *************************** 1. row *************************** Table: sbtest1 Create Table: CREATE TABLE `sbtest1` ( `id` int unsigned NOT N

MySQL高级——数据库优化(中)

文章目录二、索引优化分析索引优化索引分析单表建表sql案例优化双表建表sql案例优化三表建表sql案例优化索引失效(应该避免)建表SQL索引失效案例面试题讲解一般性建议 二、索引优化分析 索引优化 索引分析 单表 建表sql CREATE DATABASE db03; use db03; CREATE TABLE IF NOT EXISTS `article` ( `id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, `author_i

小楊同学的笔记本 5329

Allegro17.4原理图-PCB双向联动技巧:从网表生成到同步高亮

本文深入解析了Cadence Allegro 17.4中原理图与PCB的深度双向联动技巧。核心在于通过精准的网表生成与管理、实时的跨窗口交互高亮与信号追踪,以及元件与封装的智能匹配更新,构建高效协同设计工作流。掌握这些技巧能显著提升高速、高密度电路设计的效率与准确性,实现从逻辑设计到物理实现的无缝衔接。

weixin_29178069的博客 358

传感器模块的电路艺术:从引脚定义到系统集成的设计哲学

本文深入探讨传感器模块的电路设计艺术,从引脚定义到系统集成的完整设计哲学。重点解析电源管理、信号处理及I2C通信协议等核心电路原理,分享多模块协同中的电源架构、信号完整性和接地策略,为硬件工程师提供实用的系统级设计思维与实战案例。

o1p2q3r的博客 222

MySQL十部曲之九:MySQL优化理论

在学习优化理论之前,应该先明白:下文提到的所有优化方法是指MySQL优化器在特定条件下对SQL的的优化,我们要做的仅仅是在编写SQL时尽量满足这些特定条件而尽量多的触发MySQL优化器对SQL的优化。此外,MySQL版本的差异和MySQL的不断发展都会导致优化方法和触发条件的变化,本文基于MySQL8以及InnoDB进行讨论。

有术无道止于术,有道无术尚有可为。 1924

Applied Energy期刊小白论文投稿模板-流程经验分享

Applied Energy期刊小白论文投稿模板-流程经验分享,Elsevier期刊(爱思唯尔)投稿流程

zzu_Flyer的博客 4万+

【MySQL】Explain执行计划(十七)

当我们需要对SQL语句进行优化时必须先分析其性能时,`EXPLAIN`是一个不可或缺的神器,它可以帮助我们获取 MySQL **如何执行 SELECT 语句的信息**,例如 - 表如何连接和连接的顺序 - 哪些索引可以使用 - 是否使用了索引 - 实际使用了哪些索引 - 扫描的数据行数 - ...... 通过使用`Explain`执行计划可以说一条SQL语句的“身体状况”完全展现在我们眼前了,借此便可以着手分析它的"健康状况",并为它开出“诊断方案”,最后"实施救治"。

观止study 2048

SAP采购申请详述;以及采购计划协议/交货计划行

SAP采购申请详述;以及采购计划协议/交货计划行

saplakes的博客 4336

西电微机系统课程设计——步进电机开环控制系统设计

西电微机系统课程设计——步进电机开环控制系统设计 一、课程设计目的 1.掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。 2.加深对 A/D 和并行接口芯片的工作方式和编程方法的理解。 3.搞懂步进电机的工作原理及控制方式,掌握开环控制系统的设计思路和实现方法。 二、课程设计的内容 手动调节电位器旋钮(0V~5V),通过 ADC0809 模拟输入水库水位 0 米~50 米,CPU收到水位信号后,根据水位高度控制步进电机(水闸)进行调节。 三、系统功能与设计要求 基本功能要求 手

OutlierLi's Blog 7522

Mysql进阶-Sql优化

1:添加Insert优化: 1). 优化方案一: 批量插入数据: Insert into tb_test values(1,'Tom'),(2,'Cat'),(3,'Jerry'); 最多一次批量插入差不多一千条 就行了 2). 优化方案二 手动控制事务 如果自动。每次操作都会自动创造事务 提交事务 比较消耗性能 手动 一次提交就行 start transaction; insert into tb_test values(1,'Tom'),(2,'Cat'),(3

m0_64702880的博客 2778

【元宵快乐】猜灯谜吃元宵 元气满满闹元宵~(附猜灯谜小游戏)

导语 元宵节,又称上元节、灯节,是春节之后的第一个重要节日。 相传,汉文帝(前179—前157年)为庆祝周勃于正月十五勘平诸吕之乱,每逢此夜,必出宫游玩,与民 同乐,在古代,夜同宵,正月又称元月,汉文帝就将正月十五定为元宵节。 随着社会和时代的变迁,元宵节的风俗习惯在不断变化,但至今仍是中国的传统节日。2008年, 元宵节选入第二批国家级非物质文化遗产。 对我而言,除了吃元宵、看花灯……还有一件最重要的事情…就是… 猜灯谜!猜灯谜!!猜灯谜!!!猜谜事小,展现聪明才智事大哈哈哈.jpg .

顾木子吖的博客 2097

mysql按升序创建索引_MySQL8新特性:降序索引详解

前言MySQL 8.0终于支持降序索引了。其实,从语法上,MySQL 4就支持了,但正如官方文档所言,"they are parsed but ignored",实际创建的还是升序索引。无图无真相,同一个建表语句,看看MySQL 5.7和8.0的区别。create table slowtech.t1(c1 int,c2 int,index idx_c1_c2(c1,c2 desc));MySQL ...

weixin_39598135的博客 416

YOLO11涨点优化:半监督学习 | 结合Unbiased Teacher框架,利用海量无标签数据实现自训练暴力涨点

本文提出了一种基于Unbiased Teacher v2的半监督学习方法,用于解决YOLO11目标检测模型在标注数据不足时的性能瓶颈问题。通过分析纯监督YOLO11在小样本场景下的局限性,揭示了朴素自训练方法的三大陷阱:确认偏差、类别不均衡和噪声累积。文章详细解析了Unbiased Teacher框架的核心设计理念,包括教师-学生模型互监督机制、类别平衡损失和Burn-In预热策略,并重点介绍了v2版本针对无锚框检测器的优化。最后提出将Unbiased Teacher与YOLO11相结合的融合架构设计方案,

2601_95807009的博客 207

MobileFusion:基于结构重参数化的移动端红外可见光图像融合方法

MobileFusion提出了一种轻量化的红外与可见光图像融合框架,通过结构重参数化技术实现移动端实时部署。该方法包含可重参数多分支卷积(RepMBConv)、轻量化上下文感知注意力(LCAA)和重参数前馈网络(RepFFN)三大模块,在训练时保留多分支结构增强特征学习,推理时合并为单路算子提升效率。实验表明,MobileFusion在MSRS、FMB等数据集上实现了融合质量与推理速度的平衡,参数量仅4000,在边缘设备上也能高效运行,为资源受限场景提供了实用解决方案。代码已开源。

毕竟是Shy哥 136

mysql8索引,MySQL8新特性:降序索引详解

前言MySQL 8.0终于支持降序索引了。其实,从语法上,MySQL 4就支持了,但正如官方文档所言,"they are parsed but ignored",实际创建的还是升序索引。无图无真相,同一个建表语句,看看MySQL 5.7和8.0的区别。create table slowtech.t1(c1 int,c2 int,index idx_c1_c2(c1,c2 desc));MySQL ...

weixin_36403165的博客 307

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

mySQL定义降序索引_MySQL8新特性:降序索引详解

前言mysql 8.0终于支持降序索引了。其实,从语法上,mysql 4就支持了,但正如官方文档所言,"they are parsed but ignored",实际创建的还是升序索引。无图无真相,同一个建表语句,看看mysql 5.7和8.0的区别。create table slowtech.t1(c1 int,c2 int,index idx_c1_c2(c1,c2 desc));mysql ...

weixin_39531834的博客 637

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mysql按升序创建索引_MySQL8新特性之降序索引底层实现详解

什么是降序索引大家可能对索引比较熟悉,而对降序索引比较陌生,事实上降序索引是索引的子集。我们通常使用下面的语句来创建一个索引:create index idx_t1_bcd on t1(b,c,d);上面sql的意思是在t1表中,针对b,c,d三个字段创建一个联合索引。但是大家不知道的是,上面这个sql实际上和下面的这个sql是等价的:create index idx_t1_bcd on t1(b...

weixin_39774490的博客 526

mysql8特色_MySQL8新特性之降序索引底层实现详解

什么是降序索引大家可能对索引比较熟悉,而对降序索引比较陌生,事实上降序索引是索引的子集。我们通常使用下面的语句来创建一个索引:create index idx_t1_bcd on t1(b,c,d);上面sql的意思是在t1表中,针对b,c,d三个字段创建一个联合索引。但是大家不知道的是,上面这个sql实际上和下面的这个sql是等价的:create index idx_t1_bcd on t1(b...

weixin_32200879的博客 180

详解 MySQL 8.0 索引:从 B + 树本质到实战优化,一文彻底搞懂索引原理与避坑指南

本文深入解析MySQL索引原理与优化策略,从底层B+树结构到实战应用全面讲解。索引本质是通过预排序减少磁盘IO,但需权衡空间与维护成本。重点剖析了聚簇索引与二级索引的区别、最左前缀原则、回表机制及MySQL 8.0新特性(降序索引、函数索引等)。详细列出10大索引失效场景及优化方案,强调覆盖索引和索引下推的价值,并通过慢SQL优化案例演示索引设计方法。文章指出理解B+树存储原理和IO机制是索引优化的核心,而非死记规则,帮助开发者建立系统化的索引知识体系。

qq_40303030的博客 443

Mysql 8.0新特性

建议使用8.0.17及之后的版本,更新的内容比较多,本文只是展示一些日常能用到的新特性,具体更多新特性需参考官方文档参考文档。

qq_56947461的博客 392

MySQL索引实战:从B+树原理到慢查询优化,一次讲透

数据库性能调优中,索引是提升查询效率的核心手段。理解B+树的底层组织方式,才能明白为何合理的索引能极大减少磁盘IO。当数据量增长,全表扫描成为性能瓶颈,慢查询随之出现。通过执行计划分析索引使用情况,识别索引失效场景,并结合覆盖索引、联合索引等技巧,可以有效优化SQL响应时间。本文从索引原理到实战排查,系统梳理MySQL索引优化的关键知识点,帮助开发者在实际工程中快速定位性能问题。

weixin_30582943的博客 238

MySQL索引优化:从B+树原理到EXPLAIN实战

在数据库性能优化中,索引是解决慢查询最核心的手段。当数据量增长到百万级时,缺乏合理索引的SQL会因全表扫描而急剧变慢,而B+树作为MySQL InnoDB默认的索引数据结构,通过多路平衡树和叶子节点链表设计,将随机IO转为有序扫描,兼顾等值查询与范围查询效率。聚簇索引与二级索引的配合,以及联合索引的最左前缀法则,决定了SQL能否高效利用索引。通过EXPLAIN分析执行计划,可以准确判断索引是否生效、有无回表或filesort;同时需警惕函数操作、隐式类型转换等索引失效场景。合理设计自增主键、精简冗余索引并利

weixin_42522148的博客 264
上一篇: MySQL 8.0版本新特性详解
下一篇: like查询索引失效问题与解决办法
shadow_zed
博客等级 码龄10年 6289粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值