45-Oracle 索引的新建与重建

Oracle索引重建:原理、场景与在线维护实践 在数据库性能优化中,索引是提升查询效率的核心机制。其底层通常采用B树等数据结构,通过有序存储键值与数据位置映射,实现快速数据定位。随着数据不断增删改,索引会产生碎片化,导致逻辑读增加、物理I/O上升,进而影响查询性能与系统吞吐。索引重建通过重构索引物理结构,消除碎片、优化存储布局,是恢复索引性能的关键技术手段。该技术尤其适用于OLTP系统高并发场景,以及数据仓库中经历大量DML操作后的维护。本文聚焦Oracle数据库,深入解析ALTER INDEX REBUILD在线重建、空间管理与并行处理等核心操作,并探 阅读详情

小伙们日常里有没有被业务和BOSS要求新建索引或是重建索引?他们都想着既快又稳,那么索引在在Oracle上如何实现、新建、重建。原则是什么:

1、新建索引,查询是否高频且慢,索引列是否高选择性,新增索引对写负载的影响是否可接受。

2、重建索引,验证碎片率/B树高度是否超标,测试重建后查询提升是否有15%以上呢。

一、​核心索引类型与原理​

B*Tree索引(默认)​​
  • ​结构​:平衡树(根节点→分支节点→叶子节点),叶子节点双向链表存储键值+ROWID​
  • ​查询效率​:时间复杂度O(log n),千万级数据定位仅需约23次比较
  • ​适用场景​:高基数列(比如EMPLOYEE_ID)、范围查询(比如SALARY > 10000)
位图索引​
  • ​原理​:为每个键值创建位图(0/1标识行存在性),通过位运算(AND/OR)加速组合查询
  • ​适用场景​:低基数列(如GENDER)、OLAP系统
函数索引(Oracle 8i就开始引入)​​
  • ​机制​:对列的函数结果建索引(如UPPER(LAST_NAME))

二、Oracle的index演进:重建机制对比

​1. 11g时代:基础重建框架​
  • ​在线重建初现​:REBUILD ONLINE首次实现DML不阻塞,但首尾需毫秒级表锁(LOCK TABLE IN EXCLUSIVE MODE)
  • ​资源消耗大​:并行处理需手动管理(PARALLEL n),临时表空间易爆增(10亿级索引排序易触发multipass)
  • ​空间要求高​:需预留1.5倍原索引空间,否则引发ORA-01654
​2. 19c增强:稳定与自动化​
  • ​在线锁优化​:
  • ​自治能力引入​:支持自动统计信息收集(DBMS_STATS.AUTO_GATHER),减少手动维护
  • ​热重建支持​:RESUMABLE_TIMEOUT支持中断恢复(如空间不足暂停)
​3. 23ai革新:AI驱动与智能治理​
  • ​向量索引革命​:新增VECTOR数据类型,支持AI语义搜索(需启用vector pool内存区)
  • 自治重建升级​:当blevel≥4或碎片率>20%时,自动触发重建(需开启AUTO_INDEX_MAINTENANCE)
  • ​资源自适配​:OPTIMIZE_LOAD参数自动平衡I/O与CPU负载(NVMe环境性能提升40%)

三、新建索引方法与场景​

​1. 场景选择与优化原则

单表索引数 ≤ 列数的20%,避免DML性能下降。小表无需索引,全表扫描更快​

​索引类型​

​适用场景​

​优化建议​

​B*Tree​

主键、外键、范围查询

避免在频繁更新的列上创建

​位图索引​

性别、状态等低基数枚举值

仅适用于OLAP,禁用OLTP

​复合索引​

多列组合查询(如WHERE dept_id=10 AND job_id='IT_PROG')

第一列需被WHERE引用

​函数索引​

条件含表达式(如UPPER(last_name)='SMITH')

确保函数稳定性

2. 新建步骤(以HR.EMPLOYEES为例) 
-- 单列B*Tree索引(高频查询列)
CREATE INDEX IDX_EMP_DEPT_lastname ON employees(last_name);
--
SYS@CDB$ROOT> CREATE INDEX IDX_EMP_DEPT_lastname ON HR.employees(last_name);
Index IDX_EMP_DEPT_LASTNAME created.
-- 复合索引(多列查询,高频条件列在前)
CREATE INDEX IDX_EMP_DEPT_dept ON HR.employees(EMPLOYEE_id,department_id);

-- 位图索引(低基数列)
ALTER TABLE HR.EMPLOYEES ADD (gender int);--官方schema的sql中建表无性别
CREATE BITMAP INDEX IDX_EMP_DEPT_gender ON HR.employees(gender);

四、索引重建策略与实战分析(以HR.EMPLOYEES为例)​​

​1. 重建前提与评估​
  • ​触发条件​:
    • 索引高度 ≥4(SELECT blevel FROM dba_indexes WHERE index_name='IDX_EMP_DEPT_DEPT';)
    • 碎片率 >20%(ANALYZE INDEX idx_name VALIDATE STRUCTURE; → SELECT DEL_LF_ROWS/LF_ROWS FROM index_stats;)
    • 表频繁发生UPDATE/DELETE(如HR.EMPLOYEES的历史数据清理)​
 2. 重建实操流程
-- 步骤1:分析碎片率
ANALYZE INDEX IDX_EMP_DEPT_dept VALIDATE STRUCTURE;
SELECT name, height, DEL_LF_ROWS/LF_ROWS AS frag_ratio FROM index_stats;
-- 若frag_ratio>0.2则需重建
SYS@CDB$ROOT> ANALYZE INDEX IDX_EMP_DEPT_DEPT VALIDATE STRUCTURE;
Index IDX_EMP_DEPT_DEPT analyzed.
NAME               HEIGHT    FRAG_RATIO
_______________ _________ _____________
IDX_EMP_DEPT_DEPT            1             0

-- 步骤2:在线重建(避免阻塞DML)
ALTER INDEX IDX_EMP_DEPT_dept REBUILD ONLINE TABLESPACE HR_data;
SYS@CDB$ROOT> ALTER INDEX IDX_EMP_DEPT_dept REBUILD ONLINE TABLESPACE HR_data;
Index IDX_EMP_DEPT_DEPT altered.

-- 步骤3:验证效果  
-- 检查是否走索引
EXPLAIN PLAN FOR SELECT * FROM employees WHERE department_id=60;

ALTER INDEX IDX_EMP_DEPT_dept REBUILD ONLINE;
SYS@CDB$ROOT> ALTER INDEX IDX_EMP_DEPT_dept REBUILD ONLINE;
Index IDX_EMP_DEPT_DEPT altered.

--迁移索引位置:TABLESPACE从HR_DATA 索引重建到SH_data
ALTER INDEX IDX_EMP_DEPT_DEPT REBUILD TABLESPACE SH_DATA;
SYS@CDB$ROOT> ALTER INDEX IDX_EMP_DEPT_DEPT REBUILD TABLESPACE SH_DATA;
Index IDX_EMP_DEPT_DEPT altered.

--性能优化参数​PARALLEL n**​启用并行进程(建议值为CPU核数50%-70%)
ALTER INDEX IDX_EMP_DEPT REBUILD PARALLEL 8;

--STORAGE**​调整物理存储属性(需在重建前规划)
ALTER INDEX IDX_EMP_DEPT REBUILD STORAGE (INITIAL 100M NEXT 50M);

--COMPRESS ADVANCED启用高级压缩减少空间占用
ALTER INDEX IDX_EMP_DEPT REBUILD COMPRESS ADVANCED;

五、典型异常与解决方案

1. ​重建失败索引失效(ORA-01502)​​

​现象​:索引状态变为UNUSABLE,查询报错ORA-01502,表空间迁移或手动禁用索引后未重建

-- 检查失效索引
SELECT index_name, status FROM dba_indexes WHERE status='UNUSABLE';

-- 重建失效索引
ALTER INDEX IDX_EMP_DEPT REBUILD;
2. ​空间不足(ORA-01654)​​

​预防​:重建前检查表空间,规则​:所需空间 ≈ 原索引大小的1.2倍

SELECT tablespace_name, SUM(bytes)/1024/1024 free_space_mb 
FROM dba_free_space 
GROUP BY tablespace_name;
3. 碎片DBMS包诊断
--基础调用(仅收集索引统计),注意OWNNAME 哪个用户建的
BEGIN
  DBMS_STATS.GATHER_INDEX_STATS(
    ownname => 'SYS',
    indname => 'IDX_EMP_DEPT_dept'
  );
END;
/
--扩展参数(采样率 + 并行度)
BEGIN
  DBMS_STATS.GATHER_INDEX_STATS(
    ownname          => 'SYS',
    indname          => 'IDX_EMP_DEPT_dept',
    estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, -- 自动采样
    degree           => 4  -- 并行度(建议≤CPU核数)
  );
END;
/
-- 23ai支持JSON输出诊断报告
ANALYZE INDEX emp_name_idx VALIDATE STRUCTURE;
SELECT name, height, 
       ROUND((del_lf_rows/NULLIF(lf_rows,0))*100,2) frag_pct 
FROM index_stats;
4. 重建后必做操作​
  • ​ORA-08104 残留中断
DECLARE
  isClean BOOLEAN;
BEGIN
  -- 使用有效参数名,且不传递 cleanup_level
  isClean := DBMS_REPAIR.ONLINE_INDEX_CLEAN(
    OBJECT_ID => DBMS_REPAIR.ALL_INDEX_ID,  -- 清理所有中断索引
    WAIT_FOR_LOCK => DBMS_REPAIR.LOCK_WAIT    -- 默认锁等待策略
  );
END;
/
--PL/SQL procedure successfully completed.
  • 指定OBJECT_ID修复​
DECLARE
  isClean BOOLEAN;
  v_index_id NUMBER := 68100; -- 替换为实际索引的OBJECT_ID(从DBA_OBJECTS查询)
BEGIN
  isClean := DBMS_REPAIR.ONLINE_INDEX_CLEAN(v_index_id);
END;
/
---若表上有活跃DML操作,函数可能因无法获取锁而返回FALSE。此时需检查锁竞争
SELECT sid, serial# 
FROM v$session 
WHERE sid IN (SELECT session_id FROM dba_locks WHERE object_id = <索引ID>);

六、索引生命周期中索引影响与风险控制​

  • ​性能收益​: I/O降低:碎片整理后逻辑读减少30%~70%
  • 查询加速:索引高度从4降至2,定位效率提升50%
  • ​风险规避​: ​资源占用​:重建过程消耗CPU/IO,需在业务低峰操作
  • ​日志压力​:生成大量Redo日志,确保UNDO_RETENTION足够​
  • ​创建阶段​:按查询模式精准设计,复合索引列顺序是关键
  • ​维护阶段​:
    • 定期监控DBA_INDEXES的BLEVEL和LF_ROWS
    • 优先选择 ​**REBUILD ONLINE**​ 减少业务中断
  • ​重建黄金法则​:​“不碎不建”​​:仅当碎片率>20%或高度≥4时重建,避免过度维护。
考完CAIE认证一年后,谈谈它对我的职业的真实影响(干货) 大门,让面试官愿意给你机会,但进门之后的发展,还得靠持续的学习和项目积累。说实话,当时的心态是“考都考了,总比闲着强”,对这张证书能带来什么实际价值,心里并没有底。这种广泛的生态认可,让这张证书的“流通性”变得很强——无论跳槽还是在原公司发展,它都是一个被市场验证过的能力证明。对我个人而言,虽然没跳槽,但在年度调薪和争取内部项目时,持证经历也成了一个有力的“加分项”。这种巨大的薪资差距,恰恰反映了市场对“能落地、懂技术”的深度人才的渴求。考完证后的这一年,我看到了两条清晰的职业发展路径在自己面前展开。 阅读详情

相关推荐

Fluent DPM模型保姆级教程:三通管颗粒流动模拟,从网格导入到轨迹图生成

本文提供Fluent DPM模型在三通管颗粒流动模拟中的保姆级教程,涵盖从网格导入到轨迹图生成的全流程。通过详细步骤和参数设置,帮助用户掌握DPM模型在颗粒流动模拟中的关键技巧,适用于化工、能源等领域的工程应用。

weixin_30615767的博客 579

Oracle重建索引详解

更新:2023-05-17 18:08。

男神的专栏 9455

SAP PP实战:MRP Area怎么用?手把手教你按产线、委外供应商拆分物料计划

本文详细解析了SAP PP模块中MRP Area的功能与应用,指导如何按产线、委外供应商拆分物料计划,实现精细化物料需求管理。通过实战案例展示MRP Area在减少计划冲突、提升库存准确率方面的显著效果,为制造业企业提供可落地的解决方案。

weixin_27015733的博客 432

【模拟】Oracle重建索引

摘要:简述重建索引的情况及重建索引

weixin_42415704的博客 2640

ZYNQ-7035+HMCAD1511高速数据采集系统设计

高速数据采集是电子测量、雷达信号处理与通信基带验证的核心技术基础,其性能瓶颈常集中于采样率、通道同步性与实时处理能力。基于ADC采样原理与SoC异构架构,高带宽、低抖动时钟链路与FPGA+ARM协同处理成为突破关键。ZYNQ-7035凭借275K逻辑单元与千级DSP资源,显著提升LVDS数据流吞吐与片上滤波/触发等实时算法部署能力;HMCAD1511则以1GSPS四通道同步采样和8位分辨率,满足示波器级动态范围需求。该组合广泛应用于嵌入式信号采集平台开发、教学实验系统构建及国产化仪器原型验证。

weixin_28939623的博客 262

Python全栈入门到实战【JavaScript篇 15】async/await与Fetch API,打通前后端数据通道

Fetch API是浏览器内置的现代HTTP请求接口,用于向服务器发送请求并获取响应。它是(XHR)的替代品。学习Fetch的目标非常明确——用JS从后端API获取数据,并渲染到前端页面。这标志着前后端数据通道的打通,是实现全栈开发的核心技能。try {// 等待Promiseconst parallel = await Promise.all([ // 并行等待]);

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1981

Oracle(86)什么是索引重建(Index Rebuild)?

索引重建是数据库维护的重要部分,通过减少碎片化、优化索引结构,可以显著提高查询性能和存储利用率。了解如何检查索引的碎片化程度并进行索引重建,对于数据库管理员来说至关重要。通过定期重建索引,可以保持数据库的高性能和高可用性。

qq_43012298的博客 3599

SAP_MM/CO模块-超详细的CK11N/CK40N取值逻辑梳理(十几种业务场景,1.76W字)

本文主要讲述的是三个大的知识点,超详细,涉及到知识点比较多,并且串起来讲解,这也是我在网上搜不到相关资料才自己慢慢研究测试出来的,断断续续耗费了我一周多时间,相信只要你们认真看完,肯定会有所收获; 1、CK11N/CK40N成本发布功能中,系统前台的取数逻辑,涉及到多个采购信息记录、生产版本、货源清单、配额协议等对成本价发布的影响~~!! 2、CK11N与CK40N发布的成本价不一致的问题~~!! 3、如何处理外协加工物料的外协价与BOM组件成本取值不匹配的问题~~!!

风沙的博客 4084

Oracle重建索引

重建索引 查看信息 conn hr/hr select table_name from tabs; col segment_name format a40 select segment_name, bytes/1024 from user_segments; col object_name format a40 select owner, object_name, object_type from dba_objects where owner='HR' order by object_type; c

喝醉酒的小白 1万+

Android 13 wificond讲解

Android 13 wificond讲解

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 2932

PD详解 扩展消息——Source_Capabilities_Extended Message

PD的协议层分为控制消息,数据消息还有扩展消息,今天大师匈讲一下扩展消息中的source_cap_extended。这个消息在扩展消息中算是比较关键的东西。 扩展消息中的source_cap_extended 大师匈先上图,然后逐一解释; 上面的图表说了source_cap_ext中包含了哪些内容。 我们注意到在source_cap扩展消息中是以字节为单位的,并不是像source_cap中以一个object为单位,当然有注意到PD标准spec中说明的扩展消息的话,那里有说明,在header之后的字节

大师匈的博客 3516

索引的合并、重建与监视

查看当前用户的所有索引: [code="java"]SQL> select index_name,index_type,table_name,uniqueness from user_indexes; INDEX_NAME INDEX_TYPE TABLE_NAME UNIQU...

duqiangcise 131

手机开发实战58——小区广播介绍2

业务 针对小区广播短消息的特点,可以提供一些基于目前短消息不能或不适合提供的服务: 1. 显示网络服务基站名称:用户可以随时了解手机登记在哪个基站下,特别是在边界交叉覆盖区域,用户可以清楚的知道通话建立在哪个基站下,在用户投诉和故障描述中也会有所帮助; 2. 提供用户问候信息:可以在覆盖机场、车站等地区的基站广播一些用户问候语或一些企业形象广告语; 3. 充分利用小区广播地

xjbclz的专栏 772

oracle10g索引不生效,oracle 10g分区表索引失效测试

一、测试环境SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64biPL/SQL Release 10.2.0.3.0 - ...

weixin_32112641的博客 175

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

oracle索引没有去掉并行,Oracle 建立索引及SQL优化

数据库索引:索引有单列索引,复合索引之说。如某表的某个字段有主键约束和唯一性约束,则oracle会自动在相应的约束列上建议问一索引。数据库索引主要进行提高访问速度。(如楼层索引,进来先看索引能快速定位到要找的楼层房间)建设原则:1、索引应该常建在where子句经常用到的列上。如果某个大表经常使用某个字段进行查询,并且检索行数小于总表行数的5%,则应该考虑。2、对于两表链接的字段,应该建立索引。如果...

weixin_39917485的博客 710

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数据库批量删除实战:从分页删除到表重建的完整解决方案

在数据库管理与应用开发中,数据删除是维护数据生命周期、保障系统性能的关键操作。其核心原理在于数据库为保证ACID特性,在执行删除时会生成重做日志与回滚信息,并可能施加行锁或表锁,直接影响事务处理与并发性能。掌握高效的删除技术,对于优化存储资源、提升查询效率及满足数据合规要求具有重要价值,尤其适用于数据归档、日志清理与历史数据迁移等高频场景。本文聚焦批量删除这一常见需求,针对传统DELETE语句在大数据量下可能导致的事务日志膨胀与锁等待超时等问题,深入剖析分页删除与表重建等高级策略,提供兼顾安全性与效率的工程

weixin_30603633的博客 393

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Oracle索引技术pdf

下载地址:网盘下载内容介绍编辑正确使用Oracle数据库的索引不仅可以实现良好的性能,更重要的是能够创造出可伸缩的数据库应用程序。本书在介绍各种类型索引的过程中,始终围绕性能这一主线,透彻分析了为Oracle数据库创建和优化索引的方方面面。本书三位作者都是经验丰富的Oracle数据库管理员,拥有创建、使用和维护索引的丰富经验。Darl Kuhn是Oracle公司...

weixin_30824277的博客 207

Oracle数据库基础面试题总结

Oracle数据库基础面试题总结1、解释冷备份和热备份的不同点以及各自的优点?2、你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢?3、如何转换init.ora到spfile?4、解释data block,extent和segment的区别(这里建议用英文术语)5、给出两个检查表结构的方法6、怎样查看数据库引擎的报错7、比较truncate和delete命令8、使用索引的理由9、给出...

分享技术,传播知识! 2585

oracle分区表介绍(含本地分区索引和全局分区索引介绍)

通过分区,您可以将非常大的表和索引分解为更小的,更易于管理的部分,称为分区。每个分区都是一个独立的对象,具有自己的名称和可选的自身存储特性。 分区表的几个好处: 1.增加可用性 分区的不可用并不意味着整个表不可用。查询优化器会自动从查询计划中删除不可用的分区,因此当分区不可用时,查询不会受到影响 2.简化表管理 分区是既可以集体管理,也可以单独管理的片段。 DDL语句可以直接操纵分区,而不仅仅是整...

魂醉的一亩二分地 2518

oracle index column,Oracle 优化之SQL(index values与index column values关系?)

'596849' reverse key index is?(转载asktom)本文小实验来源ASKTOM网站,感谢doudou@TEST>create table t (x number, y varchar2(10));doudou@TEST>insert into t values(596849 ,'596849');doudou@TEST>create index t1_...

weixin_39578674的博客 176

solr定时实时重建索引和增量更新

Solr Data Import Hander Scheduler 说明:         Solr官方提供了很强大的Data Import Request Handler,同时提供了一个简单的 Scheduler,  示例中的 Scheduler 只支持增量更新,不支持定期重做索引,因此我做了一个简单的封装,增加了重做索引的定时器.  (原定时器作者是:Marko Bonaci, 在此表示

4万+

Oracle研学-对象

物化视图与普通的视图相比的区别是物化视图是建立的副本,它类似于一张表,需要占用存储空间。基表就是物化视图所涉及的表。序列是 ORACLE 提供的用于产生一系列唯一数字的数据库对象(产生连续数字的数据库对象)oracle表的字段没有自动增长的特性,对应的oracle提供了序列,独立于表的一个数据库对象,序列产生数字,表可以使用这个数字。视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图所对应的数据并不真正地存储在视图中,而是存储在所引用的数据表中,视图的结构和数据是对数据表进行查询的结果。

zhlyxx的博客 1773

Oracle索引修复 ,ORA-00600: internal error code, arguments: [6200],

Oracle索引修复 ,ORA-00600: internal error code, arguments: [6200], 问题背景:客户反馈DB每天产生的incident日志很多,需要排查原因 查看alert日志发现大量的ORA-07445、ORA-00600错误 1 Errors in file /data/oracle/diag/rdbms/bydata/bydata/trace/bydata_mmon_3667.trc (incident=111052): 2 3 ORA-.

m0_38048955的博客 319

【问题记录】oer 8102.2 表与索引记录不一致 写trace文件

这两天告警日志一直在报以下警告: Mon Dec30 19:54:39 2013 Errors infile /u01/oracle/admin/eptdb/udump/eptdb2_ora_2093088.trc: Mon Dec30 19:54:43 2013 Errors infile /u01/oracle/admin/eptdb/udump/eptdb2_ora_209308

Sharon--start focusing on Oracle 1423

Oracle

OracleOracle0.概念1.数据库对象1.1 视图 View1.1.1 创建视图的语法1.1.2 视图的查询1.1.3 视图的作用1.1.4 授权创建视图1.1.5 创建简单视图(单表)1.1.6 创建复杂视图(多表)1.1.7 查询当前用户名下的所有视图1.1.8 删除视图1.1.9 同一数据库,两个不同账户之间表的授权1.2 序列 SEQ1.2.1 什么是序列?1.2.2 创建序列1.2.3 查询用户的序列1.2.4 删除序列1.3 索引1.3.1 索引的概念1.3.2 创建索引1.3.3修改和

weixin_43766298的博客 1185
上一篇: 44-Oracle 系统DBMS包的功能和演进
下一篇: 46-Oracle ASH-报告生成
远方1609
博客等级 码龄22年 577粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值